版权声明:交个朋友呗,QQ1085081059 https://blog.csdn.net/guozhikai2019/article/details/89006555
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{
pid_t pid;
pid = fork();
if(pid < 0 )
{
perror("创建进程失败");
}
else if(pid == 0)
{
int i = 0 ;
for(i=0 ; i < 5 ;i++)
{
printf("我是子进程:%d\n",i);
sleep(1);
}
_exit(12);
}
else
{
int status = 0 ;
wait(&status);
if(WIFEXITED(status) != 0)
{
printf("子进程的退出状态是%d\n",WEXITSTATUS(status));
}
}
return 0;
}
wait(&status);
- 等待到任意一个子进程退出就返回退出进程的ID
- 要是该进程没有子进程或者所有子进程都已经退出了,则直接返回
if(WIFEXITED(status) != 0)
{
printf("子进程的退出状态是%d\n",WEXITSTATUS(status));
}
- 一定要先判断子进程是否是正常退户,正常则返回值不为0
- 只有先判断是正常退出了才能取回子进程的返回值