избегать вызова обработчика sigchld в части кода - PullRequest
0 голосов
/ 22 октября 2019

В моей программе есть обработчик SIGCHLD, который запускает процессы зомби.

Как мне избежать вызова обработчика SIGCHLD в части кода, где я выполняю несколько вызовов fork () и waitpid ()звонки?

Потому что сейчас, когда я делаю вызов fork () и потомок заканчивает свое выполнение, он возвращает сигнал SIGCHLD, поэтому он вызывает обработчик SIGCHLD, но я хочу пожинать процесс в этой частикод а не в обработчике?

Как я могу это сделать? Блокировка сигнала SIGCHLD?

1 Ответ

0 голосов
/ 22 октября 2019

Попробуйте:

   sigemptyset(&set);
   sigaddset(&set, SIGCHLD);
   s = pthread_sigmask(SIG_BLOCK, &set, NULL);

Позже, когда вы закончите с этим, используйте SIG_UNBLOCK, чтобы разблокировать обработчик sig.

...