предотвращение превращения дочернего процесса в бесхозный - PullRequest
1 голос
/ 25 июля 2011

Мой процесс в Linux имеет 4 детей.Через некоторое время выполнения все дети усыновляются процессом init.Как мы можем предотвратить эту ситуацию?(это не так с процессами зомби).

Процесс написан на C, а ОС - Linux.Мой код вызывает waitpid!В чем может быть проблема?У 99,99% у нас нет этой проблемы.

Последнее обновление: что если кто-то выполнит команду «kill -9»?Это немедленно завершает родительский процесс и оставляет детей сиротами.

Ответы [ 3 ]

3 голосов
/ 25 июля 2011

Если ваши процессы переопределяются init, это означает, что их родительский процесс умер. Когда умирает родительский процесс, init принимает его, чтобы он мог пожинать зомби, wait() нажимая на ребенка, когда он (то есть init) получает SIGCHLD.

Если вы не хотите, чтобы init становился родителем ваших детей, вы должны обеспечить, чтобы ваш процесс продолжался до тех пор, пока все ваши дети не умерли и не были пожинены вашей программой.

1 голос
/ 25 июля 2011

Подождите, пока дети выйдут, прежде чем покинуть себя. Для получения дополнительной информации см. Справочную страницу wait(2).

0 голосов
/ 25 июля 2011

Проверьте на главной странице параметры своего API-интерфейса waitpid и убедитесь, что ваш родительский процесс не должен быть завершен до завершения всех дочерних процессов.Можете ли вы разместить свой код здесь?

...