1

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

我需要接收 SVN 进程的状态,所以我使用“反引号”。

例如:

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

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

我尝试使用“ALARM”信号,但它并没有杀死卡住的进程。只有当过程完成时,我才会收到指示。

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

4

1 回答 1

6

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

use IPC::Run qw( run timeout );

run [ 'bla', 'arg' ], '>&', \my $results, timeout( 10 )
   or die "bla: $?"
于 2013-06-09T06:41:21.427 回答