相关疑难解决方法(0)

使用`sigaction(2)`忽略`SIGCHLD`信号有什么用?

事实证明,我们可以通过指定要由其父节点忽略的信号来防止出现僵尸进程(即父节点不wait()对其进行_exit()).但是,无论如何,它似乎默认被忽略.这怎么工作?SIGCHLDsigaction()SIGCHLD

int main (void) {
    struct sigaction sa;
    sa.sa_handler = SIG_IGN; //handle signal by ignoring
    sigemptyset(&sa.sa_mask);
    sa.sa_flags = 0;
    if (sigaction(SIGCHLD, &sa, 0) == -1) {
        perror(0);
        exit(1);
    }
    int pid = fork();
    if (pid == 0) { //child process
        _exit(0);
    }
    do_something(); //parent process
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c linux signals process c99

5
推荐指数
1
解决办法
2379
查看次数

标签 统计

c ×1

c99 ×1

linux ×1

process ×1

signals ×1