进程
进程退出状态,是可以查看的。有时候,我们需要用子进程来完成一些操作,但是子进程没操作完就结束了,我们需要知道它是为什么退出,在哪里退出,那么看以下例程:
#include <stdio.h>#include <stdlib.h>int main(void){pid_t pid;if((pid = fork()) < 0){perror("fork");}else if(pid == 0){if((pid = fork()) < 0){perror("fork");}else if(pid > 0){printf("first child, parent pid = %d\n", getppid());exit(0);/*parent from second fork == first child*/}sleep(2);printf("second child, parent pid = %d\n", getppid());exit(0);}if(waitpid(pid ,NULL, 0) != pid){perror("wait");}exit(0);}第二个子进程调用sleep保证打印父进程ID时第一个子进程已终止。在fork之后,如果不使第二个子进程休眠,那么它可能比其父进程先执行,于是它打印的父进程ID将是创建它的父进程,而不是init进程。(进程ID1)