进程waitpid()的用法

Posted 我有一壶酒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程waitpid()的用法相关的知识,希望对你有一定的参考价值。

 

 

 代码分析:

/* 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()的用法的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp Linux僵尸进程处理wait与waitpid用法,信号捕捉与屏蔽int sigaction(int signum,const struct sigaction * act,struct

wait()函数和waitpid()函数详解

wait函数与waitpid函数

如何不使用waitpid阻止父母

wait,waitpid

阻塞进程函数 wait()和waitpid()