LINUX.ORG.RU

Узнать ppid родительского же pid-а (php + C)


0

1

Приветствую! Подскажите как узнать ppid ppid-a в программке на Си?

Ситуация следующая: скрипт (start.php) на php вызывает на исполнение через exec_shell прогу (./app) на Си. Прога в свою очередь должна быть уверена что её запустил именно этот start.php а не какой нибудь другой или шелл.

Как вариант я могу posix_getpid() получить pid start.php и передать его как аргумент в ./app, в нём узнать ppid() сравнить и в идеале они бы совпали. Но проблемка в том что exec_shell (из start.php) сам по себе порождает промежуточный процесс и ppid() полученный в ./app не будет равен pid-у start.php В частном случае отличаться будут на единицу, но не всегда так.

Т.е. в ./app (на Си) надо найти ppid от ppid. Есть ли готовые варианты получения ppid по номеру, а то даже просто getpid(), getppid() толком не описаны (не нашел).

Или может ещё какие более верные варианты идентификации php-родителя (по имени, иноду или ещё как).


Как вариант я могу posix_getpid() получить pid start.php и передать его как аргумент в ./app, в нём узнать ppid() сравнить и в идеале они бы совпали.

А что мешает другой программе (а не start.php) сделать точно также и пройти проверку?

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

Ситуация осложняется тем что мипс устройство и ps ущербный, ключи не понимает, только и того что показывает пиды и прцессы. Вот top показывает и родительские.. Еще тут встречал наметки касательно /proc/[pid]/stat . Но все же надеялся что уже есть в сях готовое для отслеживания цепочки.

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

вот посмотри исходники top и сделай так же.

anonymous
()

Что ж, сделал таки через анализ /proc/[ppid]/stat

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