是否有一种简单、可靠的方法来判断IPC::Run
任务何时完成,即任何子进程已退出?
令人惊讶的是,文档对此保持沉默。
似乎循环pumpable
工作,虽然它并没有真正清楚地记录为正确的做事方式:
use strict;
use warnings;
use IPC::Run;
use 5.12.0;
my $handle = IPC::Run::start(['sleep', '10']);
while ($handle->pumpable)
{
sleep(0.5);
# do other stuff in the event loop
# so we don't want to block on finish
}
$handle->finish;
print("exited with '" . $handle->result . "'");
有更好的选择吗?finish
块,但是当您等待 proc 完成时,您无法在事件循环中执行其他工作。
我很惊讶没有简单的
$handle->running
或者
$handle->finished
我错过了一些明显的东西吗?
同样,似乎没有记录的方式来获取孩子(ren)的pid。