Есть ли способ сказать, если процесс является дочерним, если он сделал fork, а затем setsid

Если процесс сделал fork тогда ребенок сделал setsidЕсть ли способ сказать, что это был ребенок первого процесса? Есть ли способ убить такой процесс вместе с его родителем?

1 ответ

Решение

setsid не разрушает отношения родитель / ребенок. Таким образом, вы все еще можете получить дочерние элементы процесса, например, как описано здесь (связать нас с конкретной Ubuntu, но это работает для любого другого дистрибутива).

Родительский процесс всегда может легко отследить своих прямых потомков, так как fork возвращает их идентификатор (внуки становятся более хитрыми...) и отправляет сигнал любому из своих потомков при выходе (изящно).

prctl(PR_SET_PDEATHSIG, <signal>) (удобный способ заставить детей получать сигнал, если родитель умирает) тоже переживет вызов setsid.

Другие вопросы по тегам