进程的退出状态不等于其退出值,退出值只是退出状态的其中一个量。
拓展:
子进程在退出的时候,其状态信息是怎么传递给父进程的呢?答案是:可以使用exit()/_exit()来退出并传递这些信息,这几个函数的接口如下:
以上两个函数中的参数:status就是所谓的退出值,这个退出值是整个子进程的退出状态的一部分信息。那么父进程是怎么获取子进程的整个退出状态的呢?答案是:可以使用wait()/waitpid()来获得子进程正常退出的退出状态,这几个函数的接口如下:
这里必须注意,此处的stat_loc所指向的内存就包含了所有的退出状态,上面所提到的status被包含在该内存的低8位。我们可以用如下宏来通过stat_loc获取status:
WEXITSTATUS(*stat_loc)
这些宏定义可以通过查阅wait()/waitpid()的man手册得知。