1

我有一个 PERL 脚本,它循环并调用具有不同参数的二进制文件。我正在使用 IPC::Run。我想当用户按下诸如“ENTER”之类的键时,会显示一条状态消息,例如

“目前正在编写 28 个脚本中的 14 个(完成 50%)”

我的脚本如下:

    foreach my $file (@files) {

        $file =~ s/$file_dir//;

        #Run the test case, store the output in $stdout 
        run [ "php", "PROGRAM.phar", "$file" ], ">", \my $stdout;

                    print LOG_FILE "Return code $?\n";
                    print LOG_FILE "Output: $stdout");

    }

基本上我将如何中断二进制文件以显示我的状态消息?

4

1 回答 1

1

如果我更正 IPC::Run 的这种用法不是多线程的。它将一一执行命令,并且无法打印消息,因为只有一个进程。

喜欢:

  use Parallel::ForkManager;

  $pm = new Parallel::ForkManager($MAX_PROCESSES);
  my $input;

  foreach $data (@all_data) {
    # Forks and returns the pid for the child:
    my $pid = $pm->start and next;

    ... do some work with $data in the child process ...

    $pm->finish; # Terminates the child process
    chomp($input= <STDIN>);
    print "Some statistics\n" if $input =~ m!\n!;

  }

问候,

于 2012-12-04T09:15:36.737 回答