Я пишу программу для некоторой домашней работы, которая повлечет за собой некоторое разветвление, но я немного не понимаю, как обмениваться переменными и иметь дело с зомби-процессами.
Если у меня есть глобальные переменные, родитель и все дети работают с одной и той же «копией» этих глобальных переменных? Если нет, могу ли я как-то их доставить (
vfork
?)?Я знаю, что такое зомби-процессы, но не понимаю, как от них избавиться. Моя программа будет запускать множество временных процессов, поэтому я не знаю, смогу ли я
wait()
для каждого из них по отдельности. Когда родительский процесс завершается, это избавляет от всех связанных с ним зомби, верно? Что делать, если родитель уволен раньше ребенка? Оставит ли ребенок после себя зомби, когда он закончит (это те, которыхinit()
периодически убирает)?Возможно, полностью обойдя вопрос 2, поскольку меня на самом деле не волнуют результаты дочерних процессов, есть ли способ заставить их вообще не оставлять зомби? Я видел кое-что о
signal(SIGCHLD, SIG_IGN)
, но я не уверен, как его использовать, а найденная мной справочная страница для него была несколько тупой.