1. 程式人生 > >多進程——waitpid()函數的小例子

多進程——waitpid()函數的小例子

main com 父進程 span 一個 info ted bsp tdi

技術分享圖片

本例中使用fork()創建一個子進程,然後讓子進程暫停5s,接下來對原有的父進程使用waitpid()函數,利用WNOHANG使父進程不會阻塞每隔一秒判斷子進程是否退出。

 1 #include"my.h"
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 int main(){
 5     pid_t pid,ret;
 6     if((pid=fork())<0){
 7 
 8         perror("fork ERROR!");
 9         return 1;
10     }else
if(pid==0){ 11 12 printf("%d:進程在運行\n",getpid()); 13 sleep(10); 14 exit(0); 15 }else if(pid>0){ 16 17 do{ 18 19 ret=waitpid(pid,NULL,WNOHANG); 20 if(ret==0){ 21 22 printf("the child prociess has no exited\n"); 23 sleep(1
); 24 } 25 }while(ret==0); 26 27 if(pid==ret){ 28 29 printf("child process exit\n"); 30 } 31 } 32 33 34 return 0; 35 }

技術分享圖片

多進程——waitpid()函數的小例子