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