Килинг-процессы в Си с сигналами - PullRequest
2 голосов
/ 11 августа 2010

Основной процесс в моей программе разветвляется еще на 3 процесса, например, с идентификаторами процессов pid1, pid2, pid3.Процессы Pid1 и pid2 находятся в бесконечном цикле.То, что я хочу, это когда процесс pid3 закончен, все процессы, включая основной, завершены.На данный момент я использую:

wait(pid3);
kill(0, SIGKILL);

, которые делают все выше, как я сказал, но на терминале печатает Killed.Я не хочу, чтобы сигнал отображал убитые и ничего не заражал, но изящно выходит из программы.Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 11 августа 2010

Вместо этого используйте SIGTERM и установите обработчик сигнала, который выполняет чистый выход (например, exit(0)) при получении SIGTERM.

1 голос
/ 11 августа 2010

Альтернативный метод - установить pipe() между процессами и заставить процессы pid1 и pid2 завершать работу, когда они видят конец файла в своем канале.

...