2014-11-18 5 views
0

У меня есть программа PHP, которая запускает процесс в фоновом режиме с помощью exec() (вывод процесса отправляется в/dev/null). Затем я использую exec("echo $!", $processes[0]), потому что я хочу сохранить идентификатор процесса, чтобы впоследствии его завершить. Однако результат $processes[0] представляет собой пустой массив.PHP exec() не сохраняется Идентификатор процесса

Почему идентификатор процесса не сохраняется? Обратите внимание, что идентификатор процесса выводится правильно, если я выполняю фоновый процесс, а затем запускаю echo $! с терминала. Еще одно замечание: я использую Raspberry Pi, который основан на Linux.

+2

Второй 'exec()' запускает новый процесс оболочки, который не знает предыдущих «$!». – mario

ответ

3

Чтобы записать идентификатор процесса, вы должны установить его в переменную. Например, чтобы запустить другой PHP-скрипт в фоновом режиме:

$pid = exec("php mysbackgroundscript.php >/dev/null 2>&1 & echo $!"); 

В переменной $ pid должна содержаться PID.

+0

Отлично работает. Спасибо за пример. –

Смежные вопросы