【发布时间】:2011-11-02 13:23:10
【问题描述】:
我需要正确处理SIGCHLD。如何将它与我现有的代码一起使用?目前我不能等待子进程,除非我使用0 而不是WNOHANG|WUNTRACED。
status = 0;
pid_t child, endID;
if(amp == 1)
signal( SIGCHLD, SIG_IGN );
child = fork();
if (child < 0) {
perror("fork() error\n");
exit(EXIT_FAILURE);
} else if (child == 0) {
// do sth here
perror("error\n");
} else {
//sleep(1)
如果我删除 sleep 则第一次执行父项.. 为什么?
【问题讨论】:
-
你想达到什么目的?
-
通过编写和安装适当的信号处理函数来允许混合后台和前台进程
-
信号处理器应该做什么?
-
杀死或忽略僵尸