进程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