码迷,mamicode.com
首页 > 系统相关 > 详细

进程waitpid()的用法

时间:2016-06-19 09:01:34      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

技术分享

 

 

技术分享

技术分享

 代码分析:

/* waitpid.c */
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    pid_t pc, pr;

    pc = fork();
    if( pc < 0 )
    {
            printf("Error fork\n");
            exit(1);
    }
    else if( pc == 0 )    /* 子进程 */
    {
        /* 子进程暂停5s */
        sleep(5);
        /* 子进程正常退出 */
        exit(0);
    }
    else    /* 父进程 */
    {
        /* 循环测试子进程是否退出 */
        do
        {
            /* 调用waitpid,且父进程不阻塞 */
            pr = waitpid(pc, NULL, WNOHANG);

            /* 若子进程还未退出,则父进程暂停1s */
            if( pr == 0 )
            {
                printf("The child process has not exited\n");
                sleep(1);
            }
        }while( pr == 0 );

        /* 若发现子进程退出,打印出相应情况 */
        if( pr == pc )
        {
            printf("Get child exit code: %d\n",pr);
        }
        else
        {
            printf("Some error occured.\n");
        }
    }
}

 

技术分享

进程waitpid()的用法

标签:

原文地址:http://www.cnblogs.com/yihujiu/p/5597399.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!