Я запускаю приложение командной строки из скрипта perl (с использованием system ()), которое иногда не возвращает, а точнее выдает исключение, которое требует ввода данных пользователем для прерывания приложения. Этот скрипт используется для автоматического тестирования приложения, которое я запускаю с помощью команды system (). Поскольку это часть автоматизированного тестирования, команда sytem () должна возвращаться, если возникает исключение, и считать тест неудачным.
Я хочу написать фрагмент кода, который запускает это приложение, и, если возникает исключение, он должен продолжить работу со сценарием, считая этот тест неудачным.
Один из способов сделать это - запустить приложение в течение определенного периода времени, и если системный вызов не возвращается в течение этого периода времени, мы должны завершить system () и продолжить выполнение сценария.
( Как я могу завершить системную команду с тревогой в Perl? )
код для достижения этого:
my @output;
eval {
local $SIG{ALRM} = sub { die "Timeout\n" };
alarm 60;
return = system("testapp.exe");
alarm 0;
};
if ($@) {
print "Test Failed";
} else {
#compare the returned value with expected
}
но этот код не работает в Windows, я провел некоторое исследование по этому вопросу и обнаружил, что SIG не работает в Windows (программирование на языке Perl).
Кто-нибудь может подсказать, как я могу добиться этого в Windows?