进程退出
我们创建子进程是让它干活,可是它有没有做好?我们可以调取子进程的退出码,使用wait函数
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
// pid_t getpid(void);
pid_t pid ;
// pid=getpid();
int cnt=0;
pid=fork();
int status;
if(pid>0){
wait(&status);
printf("child quit,status=%d\n",WEXITSTATUS(status));
while(1){
printf("this is father Pid %d\n",getpid());
printf("cnt= %d\n",cnt);
sleep(1);
}
}
else{
while(1){
printf("this is Child Pid %d\n",getpid());
sleep(1);
cnt++;
if(cnt==3){
exit(3);
}
}
}
return 0;
}
status参数: 是一个整型数指针
非空: 子进程退出状态放在它所指向的地址中。
空: 不关心退出状态
孤儿进程
父进程如果不等待子进程退出,在子进程之前就结束了自己的“生命”,此时子进程叫做孤儿进程 Linux避免系统存在过多孤儿进程,init进程收留孤儿进程,变成孤儿进程的父进程