Ваша предпосылка неверна. Процесс всегда может получить идентификатор процесса своего родителя, вызвав getppid
. getppid
— один из редких системных вызовов, который не может дать сбой. Даже если исходный родительский процесс процесса умер, дочерний процесс будет принят init, поэтому getppid
вернет 1.
Процесс не может найти PID своих дочерних элементов, или PID своего прародителя, или PID своих братьев и сестер и т. д. Точнее, он может это узнать, но только с помощью вызова ps
или какого-либо эквивалентного метода. такой метод, как сбор информации из /proc
, т.е. те же самые методы, которые может использовать любой несвязанный процесс.