Q
通知父进程
0
A
回答
4
当孩子退出时,操作系统向父母发送SIGCHLD
。您可以选择使用WNOHANG
轮询waitpid()
,或者在收到SIGCHLD
后仅与wait()
进行核对。子进程不需要特别做任何事情,这一切都由操作系统管理。
1
在Linux操作系统中,每个孩子都有一些父母,即使父母在孩子之前死亡,该孩子也被init(PID:1)进程继承。这样做是为了不应该有任何僵尸进程(进程表中存在进程表,但进程实际上已经死亡),这会占用无用的内存空间。
内核会关注所有因完全执行或由于其他原因(如无效内存访问)而死亡的进程,并保留一些信息,如孩子的退出状态。当孩子终止SIGCHLD
信号发送给父母。默认情况下,信号被忽略。但是,通常在SIGCHLD的处理程序中实现系统调用,以便父级可以根据子级的退出状态进行操作。
0