가끔 리턴하지 않는 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
}
하지만이에 대한 몇 가지 연구를하고 SIG는 (Windows 용 책 프로그래밍 펄 작동하지 않는 것을 발견이 코드는 윈도우에서 작동하지 않습니다). 몇 가지 제안이 어떻게하면 창문에서 이것을 얻을 수 있습니까?
고마워요이다 추상화! 그것은 작동합니다 :) – int80h