perl(windows)中外部进程完成超时

时间:2013-06-09 06:35:16

标签: perl

我正在编写一个用于Windows的perl程序,它运行几个SVN命令。

我需要收到SVN流程的状态,所以我正在使用“返回滴答”。

e.g:

{
$COMMAND="blabla...";
$results=`$COMMAND 2>&1`;
parse_results($results);
}

有时进程会卡住,所以我需要为进程设置超时。

我尝试使用“ALARM”信号,但它没有杀死卡住的进程。只有在流程结束时才会收到指示。

我可以做些什么来处理那些不够快速完成的流程?

1 个答案:

答案 0 :(得分:6)

信号是一个unix概念。相反,您应该使用IPC::Run

use IPC::Run qw( run timeout );

run [ 'bla', 'arg' ], '>&', \my $results, timeout( 10 )
   or die "bla: $?"