У меня есть PHP-программа, которая запускает процесс в фоновом режиме с помощью exec() (вывод процесса отправляется в /dev/null). Затем я использую exec("echo $!", $processes[0])
потому что я хочу сохранить идентификатор процесса, чтобы впоследствии его завершить. Однако результатом $processes[0]
является пустой массив.
Почему идентификатор процесса не сохраняется? Обратите внимание, что идентификатор процесса выводится правильно, если я выполняю фоновый процесс, а затем запускаю echo $!
от терминала. Еще одно замечание: я использую Raspberry Pi, который основан на Linux.
Чтобы записать идентификатор процесса, вы должны установить его в переменную. Например, чтобы запустить другой PHP-скрипт в фоновом режиме:
$pid = exec("php mysbackgroundscript.php >/dev/null 2>&1 & echo $!");
Затем переменная $ pid должна содержать PID.
exec()
запускает новый процесс оболочки, который не знает о предыдущих$!
,