C 子进程未正确退出的原因是什么?

C 子进程未正确退出的原因是什么?,c,C,分叉的子进程正在工作,并且没有正确退出(终止)。发生这种情况的可能性是什么?孩子可能是僵尸 子进程退出后,将进入Z(僵尸)状态。此状态的存在是为了保持子进程的退出状态,直到子进程的父进程可以检索它为止,并防止子进程的PID被重用,直到父进程收到子进程退出的通知为止 通过调用系统调用的wait()/waitpid()系列之一,父进程将被通知子进程已退出。通常,这是对SIGCHLD信号的响应。一旦父进程完成此操作,子PID将被释放,僵尸进程将消失 (或者,如果父进程退出,则其所有未完成的子进程都将重

分叉的子进程正在工作,并且没有正确退出(终止)。发生这种情况的可能性是什么?

孩子可能是僵尸

子进程退出后,将进入
Z
(僵尸)状态。此状态的存在是为了保持子进程的退出状态,直到子进程的父进程可以检索它为止,并防止子进程的PID被重用,直到父进程收到子进程退出的通知为止

通过调用系统调用的
wait()
/
waitpid()
系列之一,父进程将被通知子进程已退出。通常,这是对
SIGCHLD
信号的响应。一旦父进程完成此操作,子PID将被释放,僵尸进程将消失


(或者,如果父进程退出,则其所有未完成的子进程都将重新租入
init
,当它们退出时,它将对它们调用
waitpid()

子进程可能是一个僵尸

子进程退出后,将进入
Z
(僵尸)状态。此状态的存在是为了保持子进程的退出状态,直到子进程的父进程可以检索它为止,并防止子进程的PID被重用,直到父进程收到子进程退出的通知为止

通过调用系统调用的
wait()
/
waitpid()
系列之一,父进程将被通知子进程已退出。通常,这是对
SIGCHLD
信号的响应。一旦父进程完成此操作,子PID将被释放,僵尸进程将消失


(或者,如果父进程退出,则其所有未完成的子进程将被重新分配到
init
,当它们退出时,它将对它们调用
waitpid()

父进程是否正在等待子进程的退出状态?您是否对wait()返回的值尝试过WIFSIGNALED()和WTERMSIG()宏,以查看子进程是否被信号终止,如果是,是哪一个?

父进程正在等待子进程的退出状态?您是否对wait()返回的值尝试过WIFSIGNALED()和WTERMSIG()宏,以查看子项是否被信号终止,如果是,是哪一个?

当然我们需要更多信息肯定我们需要更多信息