在Unix中,当子进程在后台终止时,它会向父进程发送SIGCHLD信号,通知父进程终止。
即使进程在前台,也会发生同样的情况吗?如果是这样,这意味着父级将忽略它。
是这样的吗?或者如果它在前台,那么根本不会发送任何信号?
发布于 2012-03-24 05:06:47
背景和前景是作业控制概念,是shell的一部分。它们应用于进程,并且不影响哪个进程派生(执行)另一个进程。
子进程是fork()-exec()调用的结果。子进程获取执行fork()调用的进程的父pid。这是SIGCHLD信号的上下文,父pid接收SIGCHLD信号。子进程是“前台”还是“后台”并不重要,只有在进程退出时ppid才是重要的。
发布于 2012-03-24 04:36:42
没有前景孩子这回事。术语后台进程用于简单地表示我们主要处理父进程(它可以创建子进程来完成其工作的一部分)。当子进程退出时,SIGCHLD总是被发送到父进程。但是,父进程通常会忽略它。如果父进程想要处理子进程的退出或仅在子进程退出后才执行某些操作,那么它可以使用wait()系统调用来获取子进程的状态。
https://stackoverflow.com/questions/9845991
复制相似问题