多進程——waitpid()函數的小例子
阿新 • • 發佈:2018-09-02
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 }elseif(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()函數的小例子