我在perl腳本中運行了一個命令行應用程序(使用system()),它有時不會返回,確切地說它會拋出需要用戶輸入以中止應用程序。該腳本用於使用system()命令運行的應用程序的自動化測試。因爲它是自動化測試的一部分,所以如果發生異常,則必須返回sytem()命令並認爲測試失敗。在Windows中經過一段時間後終止系統()
我想編寫一段運行此應用程序的代碼,並且如果發生異常,則必須繼續考慮此測試失敗的腳本。
執行此操作的一種方法是在某段時間內運行應用程序,如果系統調用在該時間段內未返回,則應終止系統()並繼續執行腳本。爲實現這一 (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
}
但是這個代碼不工作在Windows上我做了一些這方面的研究和發現,SIG不會對窗口工作(書的Perl編程)。 可能有人建議我怎麼能在Windows中實現這一點?
非常感謝!有用 :) – int80h 2012-01-30 02:52:16