+ -
当前位置:首页 → 问答吧 → POE::Wheel::Run有些程序漏掉不会执行,如何解决?

POE::Wheel::Run有些程序漏掉不会执行,如何解决?

时间:2010-12-07

来源:互联网

本帖最后由 wfnh 于 2010-12-08 13:57 编辑

我一个目录下有4个脚本,要求用P::W::Run在另外一个脚本调用,但问题是有时候4个脚本都能运行,有时候就会漏掉一些脚本(没有固定哪一个)···不知道大家有没有遇到过,还是我的疏忽造成的··
调用代码如下:
ps:winxp环境+perl5.10
  1.         for my $script (keys %$r_scripts)
  2.         {
  3.                 my $cmd = catfile($script_dir,$r_scripts->{$script});#$script肯定存在,非空
  4.                 my $child = POE::Wheel::Run->new(
  5.                   Program => sub{
  6.                                 print STDERR "cmd:$cmd\n"; #调试,发现有些没打印··就是有些没执行
  7.                                 exec "$cmd" ;
  8.                           },
  9.                   StdoutEvent  => "child_stdin",
  10.                   StderrEvent  => "child_err",       
  11.                   CloseEvent   => "child_close",       
  12.                 );
  13.                 $kernel->sig_child($child->PID, "child_signal");
  14.                 # Wheel events include the wheel's ID.
  15.     $heap->{children_by_wid}->{$child->ID} = $child;
  16.     # Signal events include the process ID.
  17.     $heap->{children_by_pid}->{$child->PID} = $child;
  18.   }
复制代码

作者: wfnh   发布时间: 2010-12-07

顶一下

作者: wfnh   发布时间: 2010-12-08

多打印一些信息。证据链要充分。

另外,POE 自己有调试信息的,可以打开。

作者: flw   发布时间: 2010-12-08

回复 flw

我试一下·打开调试看看····

作者: wfnh   发布时间: 2010-12-08

回复 flw

我在my $child = POE::Wheel::Run->new这条语句之前打印$cmd,每次都能全部打印····但sub里边的print STDERR有时候也会缺一个·····

作者: wfnh   发布时间: 2010-12-08