В Linux & C, не будет ли ждать (waitpid) запущенного процесса fork-execve создания зомби? Как правильно (многократно) запускать новую программу без ожидания и без утечек ресурсов? Он также будет запущен из 2-го рабочего потока. Может ли первая программа завершиться первой, если запущенные программы еще не завершены?
Дополнительно: в моем случае у меня есть несколько потоков, которые могут выполнять процессы fork-execve в ЛЮБОЕ ВРЕМЯ и ТО ЖЕ ВРЕМЯ - 1) Некоторые мне нужно подождать для завершения и хочу сообщать о любых кодах ошибок с помощью waitpid 2) Некоторые я не хочу блокировать поток и хотел бы сообщать об ошибках 3) Некоторые я не хочу ждать и не заботится о результате и может запустить после завершения программы
Для # 2, мне нужно создать дополнительный поток, чтобы сделать waitpid? Для # 3, я должен сделать fork-fork-execve, и завершение 1-го форка приведет к тому, что 2-й процесс будет очищен (без zomb ie) отдельно через init?
Дополнительно: я прочитал кратко (не уверен, что я все понимаю) об использовании nohup, double fork, setgpid (0,0), сигнала (SIGCHLD, SIG_IGN). Разве глобальный сигнал (SIGCHLD, SIG_IGN) не имеет слишком много побочных эффектов, таких как наследование (или, может быть, нет) и предотвращение мониторинга других процессов, которые вы хотите ждать? Не будет ли полагаться на init для устранения утечек ресурсов, пока программа продолжает работать (в моем случае недели)?