PSEXEC を使用しsystem($CMD)
て perl でリモート プロセスを実行しています。
system を実行するコンピューター (it-#1 と呼びましょうcmd
) と、コンピューター #1 からコマンドを「受け取る」別のコンピューター (it-#2 と呼びましょう) があります。
2 台目のコンピューター (#2) のプロセスがスタックすることがあります。
cmd
数分後にコマンドを強制終了するタイムアウトをコンピューター #1 のシステムに設定するにはどうすればよいですか?
答えてくれてありがとう、しかし:私は非常に簡単なことをしようとしています.2つのperlファイルがあります。1 ~ 10 秒をカウントする file#1。 (+画面に出力) file#2 - タイムアウト ファイル。
結果...: タイムアウトが発生しましたが、プロセス #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