私は、時には戻ってこないperlスクリプト(system()を使用)からコマンドラインアプリケーションを実行しています。アプリケーションを中止するためのユーザー入力。このスクリプトは、system()コマンドを使用して実行しているアプリケーションの自動テストに使用されます。自動テストの一部であるため、例外が発生した場合にsytem()コマンドが返され、テストが失敗したものとみなされます。Windowsで一定時間が経過した後にシステムを終了する
このアプリケーションを実行するコードを書きたいと思います。例外が発生した場合は、このテストが失敗すると考えてスクリプトを続行する必要があります。
これを実行する方法の1つは、一定の期間アプリケーションを実行することです。システムコールがその時間内に戻らない場合は、システムを終了してスクリプトを続行する必要があります。これを達成するための (How can I terminate a system command with alarm in Perl?)
コード:
my @output;
eval {
local $SIG{ALRM} = sub { die "Timeout\n" };
alarm 60;
return = system("testapp.exe");
alarm 0;
};
if ([email protected]) {
print "Test Failed";
} else {
#compare the returned value with expected
}
が、私はこの上でいくつかの研究を行なったし、SIGは、(WindowsのブックプログラミングPerlを動作しないことが判明、このコードは、Windows上では動作しません。 )。 Windowsでこれを実現するにはどうすればいいのでしょうか?
どうもありがとうです!できます :) – int80h