О функции и времени exec () - PullRequest
       14

О функции и времени exec ()

0 голосов
/ 12 августа 2010

Сначала покажу код:

echo exec("compile\\save.exe Untitled.c tmpUntitled.c");

У меня есть программа с именем save.exe, и я хочу знать, остановилась ли она?
Если остановился, хорошо ... Сделай что-нибудь ...

Если нет, может быть ошибка или цикл ...
Теперь: я хочу построить таким же образом, чтобы контролировать время, которое использует программа, и установить ограничение (превышение лимита, что-то вроде этого ...)

У кого-нибудь есть предложение?




Edit [1]: save.exe - программа, написанная на языке C и использующая два параметра: источник и назначение.
popen просто не выполняйте save.exe, я говорю это, потому что это больше не меняет судьбу (с exec это происходит);

1 Ответ

1 голос
/ 13 августа 2010

exec() приостановит ваш скрипт во время работы exec'd-программы. Управление будет возвращено только после завершения работы внешней программы. Если вы хотите увидеть, зависла ли программа или ожидает ввода или еще чего-нибудь, вы используете popen(), который возвращает дескриптор файла, из которого вы можете прочитать вывод программы. В этот момент вы можете выполнить цикл опроса, чтобы увидеть, был ли какой-либо вывод:

$app = popen("your shell command here");

while($output = fgets($app)) {
   // handle output
   sleep(5); // sleep 5 seconds
}       

Если вы хотите отправить что-либо в приложение в качестве входных данных, вы должны использовать proc_open(), который позволяет двунаправленную связь между вашим сценарием и внешней программой.

...