等待子进程退出

版权声明:交个朋友呗,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);
  1. 等待到任意一个子进程退出就返回退出进程的ID
  2. 要是该进程没有子进程或者所有子进程都已经退出了,则直接返回
if(WIFEXITED(status) != 0)
{
     printf("子进程的退出状态是%d\n",WEXITSTATUS(status));
}
  1. 一定要先判断子进程是否是正常退户,正常则返回值不为0
  2. 只有先判断是正常退出了才能取回子进程的返回值

猜你喜欢

转载自blog.csdn.net/guozhikai2019/article/details/89006555