LINUX.ORG.RU

Получить pid процесса php

 


0

1

Здрасти! Вопрос по PHP

$process = proc_open("cmd1 | cmd2", $descriptorspec, $pipes, $cwd, $env);
$proc_info = proc_get_status($process);
echo $proc_info['pid']; 
//out 28554

ps -ax | grep 28554
27213 pts/1    S+     0:00 sh -c cmd1 | cmd2

Выдается пид sh - зачем он мне? Мне нужно узнать пид процесса, который я запустил, я не оболочки. А в идеале конечно нужно получить пид cmd2.
Как быть?
Через утилиту ps было установлено, что
PID, который вернул php = 28554
pid cmd1 = 28555
pid cmd2 = 28556

Есть некоторая закономерность. Правильно ли я поступлю, если буду считать pid_cmd1 = pid+1, pid_cmd2 = pid_cmd1 + 1?
Т.е. процессы друг за другом стартуют и если ли вероятность, что между запуском cmd1 и cmd2 запуститься внешний процесс и у pid_cmd2 уже не станет pid_cmd1 + 1?

★★★★
pstree -p $PARENT_PID

Т.о. тебе надо найти аналог этой утилиты или написать самому. Вся инфа находится в /proc/PID.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

Понял... Если средствами php не получится, буду парсить этот вывод. А как можно исключить запуск sh? Почему запускается этот процесс?

gobot ★★★★
() автор топика
Ответ на: комментарий от gh0stwizard

И насколько корректно будет, если я буду тупо плюсовать пиды? Они друг за другом будут идти или могут быть исключения?

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

насколько корректно будет, если я буду тупо плюсовать пиды?

Совершенно некорректно.

могут быть исключения

Запросто.

no-such-file ★★★★★
()
Ответ на: комментарий от gobot

От ОС к ОС, от дистра к дистру поведение генерации pid может отличаться. По правилам безопасности [NSA, CIA :] генерация pid не должна быть легко предсказуемой.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

Она очень предсказуемая оказывается )

gobot ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.