进程的wait:阻塞等待(父进程等待子进程结束后才运行),并收集退出状态,如果不收集退出状态子进程会变成僵尸状态
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
int main()
{
pid_t pid;
printf(“father pid is %d\n”,getpid());
int cnt = 0;
int data;
pid = vfork();
if(pid>0){
wait(&data); //阻塞等待(子进程退出前父进程不运行)子进程退出 并将退出状态值放在data里
printf("child quit,child data = %d\n",(WEXITSTATUS(data))); //WEXITSTATUS(data) 将data里面的值解析出来
while(1){
printf("cnt = %d\n",cnt);
printf("this is father pid:%d\n",getpid());
sleep(1);
}
}else if(pid == 0){
while(1){
printf("this id child pid:%d\n",getpid());
sleep(1);
cnt++;
if(cnt==3){
exit(3);
}
}
}
return 0;
}
运行结果为: