C wait()符号和退出状态
在Linux中,退出状态和C wait()符号和退出状态,c,linux,unix,operating-system,C,Linux,Unix,Operating System,在Linux中,退出状态和SIGCHLD之间有什么区别 在子项终止后,会发送一个SIGCHLD信号来激活父项(被wait()阻止),那么为什么我们需要子项的退出状态呢?我找不到SIGCHLD和退出状态之间的链接。退出状态由一个进程返回(通过调用exit),以告知其父进程是否成功 当父进程调用wait或waitpid时,它接收退出状态(在waitpid的情况下,子进程的pid),并可以根据该值做出决策 如果父进程接收到一个SIGCHLD信号,则表示该进程的一个子进程已完成。它不会向父级提供有关子级
SIGCHLD
之间有什么区别
在子项终止后,会发送一个
SIGCHLD
信号来激活父项(被wait()
阻止),那么为什么我们需要子项的退出状态呢?我找不到SIGCHLD
和退出状态之间的链接。退出状态由一个进程返回(通过调用exit
),以告知其父进程是否成功
当父进程调用wait
或waitpid
时,它接收退出状态(在waitpid
的情况下,子进程的pid),并可以根据该值做出决策
如果父进程接收到一个
SIGCHLD
信号,则表示该进程的一个子进程已完成。它不会向父级提供有关子级的pid或退出状态的任何信息。这是一种异步告诉父进程是时候调用wait
或waitpid子进程的退出状态是它通过exit()
(或\u exit()
)系统调用返回给父进程的值。这是一个简单的整数,通常表示子进程的成功或失败,其中零表示成功(按惯例)
SIGCHLD是在子进程终止时发送给父进程的信号。它只是通知等待的父级,子级已终止
两者的结合用于将子进程的执行结果传回其父进程。该信号告知父级子级何时退出,退出状态告知父级子级的执行结果。在收到指示子项已退出的信号(或从wait()
或waitpid()
返回)之前,父项无法检索子项的退出状态
子级可以通过多种方式(各种IPC机制、文件I/O等)将其执行结果传回父级,但最简单的方法是使用exit()
和wait()
将整数状态代码从子级发送到父级
如果父进程不关心子进程的执行状态,它可以忽略从wait()
返回的子进程的退出代码。另一方面,复杂系统可能需要知道退出状态是什么,以便重新启动子进程的新实例(fork()
),或者如果子进程没有(或没有)正确完成其任务,则可能执行其他一些程序。的可能重复。也非常感谢,先生,现在我了解了信号和退出状态的组合。谢谢,先生,因此信号向家长发出“go”,通过等待获取孩子的退出状态。