我正在使用 PSEXECsystem($CMD)
在 perl 中运行远程进程。
我有一台运行 system 的计算机(我们称之为-#1)cmd
和另一台计算机(我们称之为-#2),它“接收”来自计算机#1 的命令。
有时,第二台计算机 (#2) 中的进程会卡住。
如何cmd
在计算机 #1 中为系统设置超时,以在几分钟后强制终止 cmd?
感谢您的回答,但是:我想做一些非常简单的事情,我有 2 个 perl 文件。file#1 计算秒数 1 到 10。(+打印到屏幕) file#2-超时文件,该文件 cal file#1(系统命令)应该在 5 秒后终止文件 #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 ($@) {
die unless $@ 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