如果我在子进程中调用exit(1),此操作是否也会导致父进程终止?或者只是退出(1)终止了唯一的子进程?
答案 0 :(得分:3)
man exit
这显示
exit()函数导致正常的[当前/子级]进程终止,并且 [exit]状态的值返回到父级[process] (请参见等待(2))。 ...
exit()之后,必须将退出状态传送到父进程。有三种情况。如果父级已设置SA_NOCLDWAIT,或已将SIGCHLD处理程序设置为SIG_IGN,则将丢弃该状态。如果父母在等待孩子,则会收到退出状态的通知。 在这两种情况下,退出过程都会立即终止。如果父级没有表明对退出状态不感兴趣,但没有等待,则退出过程将变为“僵尸”过程(除了表示退出的单个字节的容器外,什么都没有) 状态),以便父级在稍后调用其中一个wait(2)函数时可以了解退出状态。
答案 1 :(得分:1)
exit
不会导致父项也退出。它会导致当前进程正常终止。
答案 2 :(得分:1)
否,exit()不会终止父进程。 exit()函数将终止当前进程,并将退出代码返回给父进程。因此,如果使用exit(1),则退出代码1将返回到父进程。