使用系統CMD我使用PSEXEC與在Perl system($CMD)
運行遠程進程時。超時在Perl
我有一臺運行系統cmd
的計算機(讓我們稱它爲#1)和另一臺計算機(讓它稱爲#2),它從計算機#1接收命令。
有時在第二計算機的處理(#2)被卡住。
我如何設置超時在計算機#1系統cmd
幾分鐘後,將強制終止CMD?
感謝您的答案,但: 即時特林做財產以後很簡單,我有2個perl的文件。 計數秒1到10的文件#1(+打印到屏幕) 文件#2-超時文件,應該在5秒後終止文件#1的cal文件#1(系統命令)。
的結果...: 發生超時,但進程#1仍在運行...
文件#2
$timeout=5;
eval {
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm $timeout;
$nread = system('F:\perl1.pl');
alarm 0;
};
if ([email protected]) {
die unless [email protected] eq "alarm\n"; # propagate unexpected errors
print "process terminated\n";}
else {
# didn't
}
文件#1
$i=0;
while($
i<10){
sleep(1);
$i++;
print "$i\n";
}
CMD窗口結果:
C:\>F:\perl2.pl
1
2
3
4
process terminated
C:\>5
6
7
8
9
10
['的perldoc -q timeout'](http://perldoc.perl.org/perlfaq8.html#How-do-I-timeout-a-slow-event%3f) – daxim