Process 调用release_task()函数?

Process 调用release_task()函数?,process,linux-kernel,wait,Process,Linux Kernel,Wait,在Linux内核中,进程终止后,通过调用release\u task()函数,将进程的进程描述符从系统中删除 我相信,父进程对子进程发出的wait()系统调用在子进程终止时调用release\u task()函数 假设父进程没有显式地发出wait()系统调用,如何调用release\u task()函数和解除分配子进程的进程描述符?如果父进程没有等待(2)子进程,子进程将成为僵尸。只要父母活着,孩子就不能收获。当父母去世时,他所有未等待的孩子都被init收养。init的工作之一是定期等待子进程(

Linux内核
中,进程终止后,通过调用
release\u task()
函数,将进程的
进程描述符
从系统中删除

我相信,父进程对子进程发出的
wait()
系统调用在子进程终止时调用
release\u task()
函数


假设父进程没有显式地发出
wait()
系统调用,如何调用
release\u task()
函数和解除分配子进程的进程描述符?

如果父进程没有
等待(2)
子进程,子进程将成为
僵尸。只要父母活着,孩子就不能收获。当父母去世时,他所有未等待的孩子都被
init
收养。
init
的工作之一是定期等待子进程(从而释放相关资源)

如果父进程不
等待(2)
子进程,子进程将成为
僵尸。只要父母活着,孩子就不能收获。当父母去世时,他所有未等待的孩子都被
init
收养。
init
的工作之一是定期等待子进程(从而释放相关资源)

函数release\u task()将最后的数据结构从僵尸进程的描述符中分离出来;它以两种可能的方式应用于僵尸进程:如果父进程对从子进程接收信号不感兴趣,则通过do_exit()函数,或者在向父进程发送信号后通过wait4()waitpid()系统调用。在后一种情况下,函数还将回收进程描述符使用的内存,而在前一种情况下,内存回收将由调度程序完成,因为do\u exit()在最后一步调用schedule()

有关更多信息,请参阅《理解Linux内核:I/O端口和进程管理》一书。

函数将最后的数据结构从僵尸进程的描述符中分离出来;它以两种可能的方式应用于僵尸进程:如果父进程对从子进程接收信号不感兴趣,则通过do_exit()函数,或者在向父进程发送信号后通过wait4()waitpid()系统调用。在后一种情况下,函数还将回收进程描述符使用的内存,而在前一种情况下,内存回收将由调度程序完成,因为do\u exit()在最后一步调用schedule()


有关更多信息,请参阅《理解Linux内核:I/O端口和进程管理》一书。

谢谢。我明白了。wait()系统调用调用release_task()函数吗?谢谢。我明白了。wait()系统调用是否调用release_task()函数?