linux系统进程 回收单个子进程——wait

  1 /*
  2 ##wait()函数头文件:#include<sys/types.h> #include<wait.h>
  3 ##原型:pid_t wait(int * status);
  4 父进程调用wait()函数,可以回收子进程终止信息
  5 1.阻塞等待子进程退出
  6 2.回收子进程残留资源
  7 3.获取子进程结束状态(退出原因)
  8 wait()与fork()配套出现,若wait错误则返回-1,成功则返回子进程的pid
  9 wait(NULL):直接回收子进程,不返回status指针
 10 */
 11 #include<sys/types.h>
 12 #include<wait.h>
 13 #include<stdio.h>
 14 #include<stdlib.h>//perror()函数的头文件
 15 #include<unistd.h>//pid_t,getpid()函数,fork()函数和sleep()函数的头文件
 16 void main(void)
 17 {
 18         pid_t pid,wpid;
 19         int  status;
 20         printf("____________YYYYYYYYYYYYYYY__________\n");
 21         for(int i=0;i<1;i++){
 22                 pid = fork();
 23                 if(pid == -1){
 24                 perror("fork() is null\n");
 25                 }
 26                 else if (pid == 0){
 27                 printf("i am child , pid = %d , ppid = %d\n ",getpid(),getppid());
 28                 printf("i will go to sleep 20s\n");
 29                 sleep(10);
 30                 //exit(2);//子进程退出
 31                 }
 32                 else if(pid > 0){
 33                 wpid=wait(&status);//父进程阻塞等待,并且回收子进程资源,返回子pid与status值
 34                 //特别注意这里是指针要传入地址
 35                 printf("i am father , i waited myson, pid = %d , sonid = %d\n",getpid(),wpid);
 36                 if(wpid==-1){
 37                         perror("wait error\n");
 38                 }
 39                 //如果子进程正常退出,则打印子进程退出的编号
 40                 if(WIFEXITED(status)!=0){
 41                 printf("WEXITSTATUS number is %d\n",WEXITSTATUS(status));
 42                 }
 43                 //如果子进程异常退出(kill),则打印子进程退出时的信号
 44                 else if(WIFSIGNALED(status)!=0){
 45                 printf("myson is kill by %d\n",WTERMSIG(status));
 46                         }
 47                 }
 48         }
 49 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值