我正在为 Windows 编写一个 perl 程序,它运行几个 SVN 命令。
我需要接收 SVN 进程的状态,所以我使用“反引号”。
例如:
{
$COMMAND="blabla...";
$results=`$COMMAND 2>&1`;
parse_results($results);
}
有时进程会卡住,所以我需要为进程设置超时。
我尝试使用“ALARM”信号,但它并没有杀死卡住的进程。只有当过程完成时,我才会收到指示。
我可以做些什么来处理完成速度不够快的流程?
我正在为 Windows 编写一个 perl 程序,它运行几个 SVN 命令。
我需要接收 SVN 进程的状态,所以我使用“反引号”。
例如:
{
$COMMAND="blabla...";
$results=`$COMMAND 2>&1`;
parse_results($results);
}
有时进程会卡住,所以我需要为进程设置超时。
我尝试使用“ALARM”信号,但它并没有杀死卡住的进程。只有当过程完成时,我才会收到指示。
我可以做些什么来处理完成速度不够快的流程?
信号是一个 Unix 概念。相反,您应该使用IPC::Run。
use IPC::Run qw( run timeout );
run [ 'bla', 'arg' ], '>&', \my $results, timeout( 10 )
or die "bla: $?"