В Linux вы можете использовать PR_SET_CHILD_SUBREAPER, чтобы указать, что ваши осиротевшие потомки должны быть заново связаны с вами вместо инициализации.

а ли новый родитель "init" илиесть ли способ контролировать, кто станет новым родителем?

Википедия, кажется, указывает, что это всегда «init». Я действительно надеюсь, что это не так. Я перепробовал все, что мог придумать с setpgid и setsid, но не повезло. И теперь, когда я вижу эту статью в Википедии, мне нужен совет.

В Unix-подобной операционной системе любой потерянный процесс будет немедленно принят специальным системным процессом init. Эта операция называется переопределением и происходит автоматически. Хотя технически процесс имеет процесс init в качестве своего родителя, он все еще называется процессом-сиротой, так как процесс, который первоначально создал его, больше не существует.Взято из википедии

Причина, по которой я спрашиваю, заключается в том, что я делаю приложение для Mac, которое запускает несколько рабочих процессов. Я хочу, чтобы эти рабочие процессы отображались как дочерние элементы основного процесса в иерархии процессовдиспетчер задач, Некоторые работники работают от имени разных пользователей, и в Mac OS X мне нужно дважды выполнить разветвление, чтобы передать привилегии дочернему процессу. Поскольку я «делаю двойную вилку», работники в настоящее время работают как демоны, и когда я смотрю с помощью диспетчера задач, я вижу, что рабочие имеют «init» как родительский процесс.

Ответы на вопрос(2)

Ваш ответ на вопрос