Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C wait()符号和退出状态_C_Linux_Unix_Operating System - Fatal编程技术网

C wait()符号和退出状态

C wait()符号和退出状态,c,linux,unix,operating-system,C,Linux,Unix,Operating System,在Linux中,退出状态和SIGCHLD之间有什么区别 在子项终止后,会发送一个SIGCHLD信号来激活父项(被wait()阻止),那么为什么我们需要子项的退出状态呢?我找不到SIGCHLD和退出状态之间的链接。退出状态由一个进程返回(通过调用exit),以告知其父进程是否成功 当父进程调用wait或waitpid时,它接收退出状态(在waitpid的情况下,子进程的pid),并可以根据该值做出决策 如果父进程接收到一个SIGCHLD信号,则表示该进程的一个子进程已完成。它不会向父级提供有关子级

在Linux中,退出状态和
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”,通过等待获取孩子的退出状态。