Являются ли дочерние процессы, созданные с помощью fork(), автоматически убиваются, когда родитель убит?

Я создаю дочерние процессы с fork() в C/С++.
Когда родительский процесс заканчивается (или по какой-то причине убит), я хочу, чтобы все дочерние процессы также были убиты.
Это делается автоматически системой? Или я должен сделать это сам?

Спасибо.


Предыдущие аналогичные вопросы:

Ответы

Ответ 1

Нет. Если родитель убит, дети становятся дочерними элементами процесса init (который имеет идентификатор процесса 1 и запускается как первый пользовательский процесс ядром).

Процесс init периодически проверяет новые дети и убивает их, если они вышли (таким образом освобождая ресурсы, которые выделяются по их возвращаемому значению).

Вопрос уже обсуждался с качественными ответами здесь: Как заставить дочерний процесс умирать после выхода из родителя?