Когда вы вызываете «убить» в родительском процессе, последуют ли последующие потомки?ли linux kill завершает дочерние процессы?
ответ
Нет, не автоматически.
Обычно, когда родитель убит, ребенку будет отправлен сигнал HUP. По крайней мере, это верно, когда родительский элемент является оболочкой. Я не уверен в том, что это бесплатно, когда ребенок был fork() ed.
Но это может быть проиграно, например, если родительский объект является оболочкой, а ребенок был запущен с использованием nohup child&
или если сам ребенок объявил, что он будет игнорировать сигналы HUP.
Да, это будет; использование kill -1
: http://unixhelp.ed.ac.uk/shell/jobz5.html
int kill(pid_t pid, int sig);
Если PID больше 0, сиг должен быть направлен к процессу, чей идентификатор процесса равен PID.
Если PID является отрицательным, но не -1, сиг направляется ко всем процессам (за исключением неопределенный набор системных процессов), чей идентификатор группы процессов равен абсолютному значению PID и для которого процесс имеет разрешение на отправку сигнала.
Если не указан setpgid
или аналогичная функция, дочерний процесс находится в той же группе процессов, что и ее родитель. Например, задания, запущенные вашей оболочкой, принадлежат к той же самой группе процессов, что и сама оболочка.
Таким образом kill -HUP $$
посылает SIGHUP
к вашей оболочке, в то время как kill -HUP -$$
посылает SIGHUP
ко всем процессам в текущей сессии, в том числе детей вашей оболочки.
Этот скрипт bash уничтожит себя, а дочерние процессы - противоположность nohup.
#!/bin/bash
read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat
trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL
# run the program given on args
"[email protected]"
exit $?
Кто-нибудь знает, есть ли такое встроенное устройство?
- 1. , когда родительский процесс убит «kill -9», как прекратить дочерние процессы
- 2. Процессы KILL «Android.process.xxx»
- 3. Завершить все дочерние процессы в LInux
- 4. Как убить все дочерние процессы, порожденные процессом, запущенным из сценария при kill или kill -9
- 5. node.js дочерние процессы
- 6. JUnit завершает дочерние потоки
- 7. QProcess :: kill() не убивает детей в linux
- 8. Убить все дочерние процессы, когда родитель убит
- 9. Как найти все дочерние процессы?
- 10. Создать 2 дочерние процессы
- 11. C: fork() дочерние процессы
- 12. Как отличить дочерние процессы?
- 13. Нужно ли мне подписывать дочерние процессы?
- 14. Killing процессы автоматически - Linux
- 15. linux shell kill signal SIGKILL && KILL
- 16. linux: kill background task
- 17. Как ограничить дочерние процессы Дженкинса?
- 18. Как запускать дочерние процессы одновременно
- 19. Правильный способ убить раздвоенные дочерние процессы
- 20. Win32: Как перечислить дочерние процессы?
- 21. Спрячьте pid, включенные дочерние процессы
- 22. nodejs декодирование (дочерние процессы использование)
- 23. linux kill all pipe on существует сценарий
- 24. Как получить все дочерние дочерние процессы id pid в c в linux
- 25. Убить фоновые процессы в Linux
- 26. Завершает ли close() функцию fsync() в Linux?
- 27. Как убить дочерние процессы в Bash?
- 28. Как вы убиваете все дочерние процессы, не убивая родителя?
- 29. Как приостановить/перезапустить процессы в C (linux)
- 30. Как убить дочерние процессы при убийстве из файла pid
Несмотря на «да» и «нет», мой ответ и скудность не противоречат друг другу. – dubiousjim
Я нахожу ваш ответ более полным. Вы всегда можете ловить сигналы и делать фанки. Таким образом, безопасно не предполагать ничего, когда дело доходит до убийства дочерних процессов, убивая родителя. – hackworks