my $pm = new Parallel::ForkManager(4);
foreach my $array (@lines) {
$pm->start and next;
$cmd = 'command';
print "\n$cmd\n\n";
exec($cmd);
$pm->finish; }
$pm->wait_all_children;
如您所见,我的代码一次运行 4 件事。这是 ffmpeg 管道视频到 x264。它的输出很杂乱,在 4 个输出之间的单线上跳来跳去。有没有办法在后台完全运行这些并重定向其输出,以便我可以干净地打印和更新 4 个单独的输出?这会很好,所以我可以告诉每个过程有多远。
如果它绝对不能在 perl 中完成,我很乐意接受任何帮助来指导我使用另一种语言,这会使这更容易。顺便说一下,这是在 Linux 下。谢谢你。
Open2远远超出了我。我将如何使用它?我无法理解如何在不换行的情况下打印每件事的进度。我想打印每个进程正在执行的任何内容的 STDERR 和 STDOUT,当它结束时,将其保留为不更新的行。这不是一个很好的解释,但我不知道如何解释我想要的。基本上,前 4 个作业会有 4 行不断刷新。然后,当其中一项工作完成时,为新工作添加一个新行,并可能以某种方式指示已完成的工作已完成。
我尝试使用“open”进行快速测试,它仍然输出到 shell。这是在 Windows 中,但它的行为仍应相同。这甚至可以用 Perl 甚至在 shell 中实现吗?
你好?我仍然需要这方面的帮助...