Как остановить программу после перерыва в Ubuntu - PullRequest
0 голосов
/ 17 марта 2012

В php файле у меня есть это:

system("../my/my.sh aa.pas", $retval);
system("../my/aa");

, где aa - исполняемый файл.

Как мне написать программу, которая остановит выполнение, если прошло n секунд?

Я хочу создать систему судейства. Он будет проверять программы, написанные на языке Pascal, C ++ и т. Д. Мне нужно остановить программу, если время ее выполнения превысит указанный предел.

Ответы [ 3 ]

0 голосов
/ 17 марта 2012
system('timeout n ../my/aa');
                ^

Где n - некоторое целое число в секундах.

Если время команды истекло, выйдите со статусом 124. В противном случае выйдите со статусом КОМАНДА. Если сигнал не указан, отправьте СРОК сигнал по таймауту. Сигнал TERM убивает любой процесс, который не заблокировать или поймать этот сигнал. Для других процессов это может быть необходимо использовать сигнал KILL (9), так как этот сигнал не может быть перехвачен.

0 голосов
/ 17 марта 2012

Вы можете сделать так:

$PID = shell_exec("nohup  ../my/aa > /dev/null & echo $!");

, чтобы запустить подпроцесс, подождать в основном процессе в течение определенного времени, затем

exec("kill -KILL $PID")

Проверить здесь поиск убить

0 голосов
/ 17 марта 2012

$! содержит pid (идентификатор процесса) последней выполненной команды.Так что можете попробовать это:

kill $!
...