僵尸进程和分叉

Pra*_*van 2 c++ fork zombie-process dup2

我有这样的代码......

c = fork();
if(c==0) {
    close(fd[READ]);

    if (dup2(fd[WRITE],STDOUT_FILENO) != -1) 
        execlp("ssh", "ssh", host, "ls" , NULL);
    _exit(1);

}   
close(fd[WRITE]);
Run Code Online (Sandbox Code Playgroud)

fd [READ]和fd [WRITE]是管道文件描述符.

当我连续运行时,当我使用ps ax时,会有很多僵尸进程.如何纠正这个?这是因为我没有使用父进程来等待子进程的退出状态...

Has*_*kun 7

如果您无意wait为您的子进程设置,请将SIGCHLD处理程序设置SIG_IGN为让内核自动收获您的子进程,例如.

signal(SIGCHLD, SIG_IGN);
Run Code Online (Sandbox Code Playgroud)