免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7789 | 回复: 4
打印 上一主题 下一主题

如何在perl中并行的执行两个程序? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-22 09:19 |只看该作者 |倒序浏览
本帖最后由 flywithclouder 于 2010-12-22 09:21 编辑

我想在perl中执行多个外部程序,如下:
  1. system(“test.exe args”);
  2. system(“test2.exe args”);
复制代码
但在perl中这两句话是顺序执行的,其实这两个程序完全独立,为提高效率我想并行执行,

请问该如何实现?

论坛徽章:
0
2 [报告]
发表于 2010-12-22 09:29 |只看该作者
fork进程同步再exec

论坛徽章:
0
3 [报告]
发表于 2010-12-22 11:26 |只看该作者
本帖最后由 Cu_fans 于 2010-12-22 11:27 编辑
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;

  4. my @arr = ("test.exe args", "test2.exe args");

  5. my @pidt;
  6. for my $i(0 .. $#arr-1)
  7. {
  8.         $pidt[$i] = fork();
  9.         if ($pidt[$i] < 0)
  10.         {
  11.                 print  "fork err","\n";
  12.                 exit(-1);
  13.         }
  14.         elsif ($pidt[$i] == 0)
  15.         {
  16.                 system($arr[$i]);
  17.         }
  18. }
复制代码
把perl写成了C, 正宗的perl中对多进程是如何处理的?

论坛徽章:
0
4 [报告]
发表于 2010-12-22 15:44 |只看该作者
在其他论坛上,有人建议我用Parallel::ForkManager ,我试了一下,确实很强大

论坛徽章:
0
5 [报告]
发表于 2010-12-24 10:33 |只看该作者
在linux下我一般这么做,你不妨试下,简单管用
system(“test.pl args &”);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP