http://blog.sina.com.cn/s/blog_636a55070101wtp5.html

wait的函数原型是:

#include #include pid_t wait(int *status)

进 程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就 会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。

参数status用来保存被收集进程退出时的一些状态,它是一个指向int类型的指针。但如果我们对这个子进程是如何死掉的毫不在意,只想把这个僵尸进程消灭掉,(事实上绝大多数情况下,我们都会这样想),我们就可以设定这个参数为NULL,就象下面这样:

pid = wait(NULL);

如果成功,wait会返回被收集的子进程的进程ID,如果调用进程没有子进程,调用就会失败,此时wait返回-1,同时errno被置为ECHILD。

如 果参数status的值不是NULL,wait就会把子进程退出时的状态取出并存入其中,这是一个整数值(int),指出了子进程是正常退出还是被非正常 结束的(一个进程也可以被其他进程用信号结束,我们将在以后的文章中介绍),以及正常结束时的返回值,或被哪一个信号结束的等信息。由于这些信息被存放在 一个整数的不同二进制位中,所以用常规的方法读取会非常麻烦,人们就设计了一套专门的宏(macro)来完成这项工作,下面我们来学习一下其中最常用的两 个:

1,WIFEXITED(status) 这个宏用来指出子进程是否为正常退出的,如果是,它会返回一个非零值。

(请注意,虽然名字一样,这里的参数status并不同于wait唯一的参数--指向整数的指针status,而是那个指针所指向的整数,切记不要搞混了。)

2,WEXITSTATUS(status) 当WIFEXITED返回非零值时,我们可以用这个宏来提取子进程的返回值,如果子进程调用exit(5)退出,WEXITSTATUS(status) 就会返回5;如果子进程调用exit(7),WEXITSTATUS(status)就会返回7。请注意,如果进程不是正常退出的,也就是 说,WIFEXITED返回0,这个值就毫无意义。

3,WIFSIGNALED(status)若为异常结束子进程返回的状态,则为真

当然,处理进程退出状态的宏并不止这两个,但它们当中的绝大部分在平时的编程中很少用到。

WIFEXITED WEXITSTATUS WIFSIGNALED相关推荐

  1. system()与WIFEXITED/WEXITSTATUS/WIFSIGNALED

    system()用于执行shell命令 头文件 #i nclude<stdlib.h> 函数定义 int system(const char *command) ; 函数说明 system ...

  2. wait获取子进程退出状态 WIFEXITED和WIFSIGNALED用法

    可以使用wait函数传出参数status来保存进程的退出状态. 常用宏函数分为日如下几组: 1. WIFEXITED(status) 若此值为非0 表明进程正常结束. 若上宏为真,此时可通过WEXIT ...

  3. Linux进程控制:wait获取子进程退出状态 WIFEXITED和WIFSIGNALED用法

    可以使用wait函数传出参数status来保存进程的退出状态. 常用宏函数分为日如下几组: 1. WIFEXITED(status) 若此值为非0 表明进程正常结束. 若上宏为真,此时可通过WEXIT ...

  4. C 库函数 system/WIFEXITED/WEXITSTATUS

    文章目录 描述 声明 参数 返回值 实例 WIFEXITED/WEXITSTATUS函数 systerm两层含义 函数实例 详解解释 参考资料 描述 C 库函数 int system(const ch ...

  5. system/WIFEXITED/WEXITSTATUS函数-linux

    system原型: 参数是命令, 命令行里敲的shell命令. 通过fork创建子进程后,在子进程中调用execl 来执行唤起 shell 进程 从而执行shell命令. systerm两层含义: 1 ...

  6. wait, WIFEXITED, WEXITSTATUS

    wait的函数原型是: #include <sys/types.h> /* 提供类型pid_t的定义 */ #include <sys/wait.h> pid_t wait(i ...

  7. Linux下wait, WIFEXITED, WEXITSTATUS的比较

    偶尔翻到了这几个关键字,找到个文章复习了下:"http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part3/".记 ...

  8. 14.system/WIFEXITED/WEXITSTATUS函数-linux

    system: 感性认识: systerm两层含义: 1.正确退出后.还需要再判断,操作成功或者操作失败. 2.错误退出. [cpp] view plaincopy #include <stdi ...

  9. 父进程等待子进程终止 wait, WIFEXITED, WEXITSTATUS

    wait()的函数原型是: #include <sys/types.h>   #include <sys/wait.h>  pid_t wait(int *status) [一 ...

最新文章

  1. nginx http proxy 正向代理
  2. odoo 自定义视图_如何使用Windows的五个模板自定义文件夹视图
  3. leetcode1424. 对角线遍历 II(排序)
  4. admin后台菜单栏的实现
  5. php mysql 非空_PHP-为什么mysql接受非空字段为null
  6. Nginx+keepalive反向代理
  7. multisim页面不够大_微信订阅号页面改版,iOS 14.2存在严重耗电问题,贾跃亭再成被执行人,特斯拉回应被判欺诈,这就是今天的其他大新闻!...
  8. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_2 响应之返回值是String类型...
  9. php中使用sftp教程,php 中的sftp 使用教程_PHP教程
  10. WinMTR 0.9.2 绿色免费版
  11. 百度:一盗功成万网枯
  12. dos下的硬盘检测工具MHDD图文教程
  13. linux hosts的allow和deny
  14. 万字长文细说 Code Review 的正确姿势
  15. 成长的旅途,未知的邂逅
  16. 初识——雷达通信一体化技术
  17. html 盒子模型添加图片,[HTML/CSS]盒子模型,块级元素和行内元素
  18. Dynasty Puzzles CodeForces - 191A+DP二维
  19. 深大算法设计与分析实验二——分治法求最近点对问题
  20. MATLAB experiment<6>

热门文章

  1. power designer概述
  2. 深圳星级用户破坏计算机信息罪,警方破获一起涉嫌破坏计算机信息系统案
  3. 一.《UE4奥丁》人物最大属性
  4. 宝塔Linux面板 - 4月11日更新 - 5.8.7免费版
  5. Android进阶——性能优化之内存管理机制和垃圾采集回收机制(六)
  6. P2800 又上锁妖塔
  7. 智能插座的制作(esp01,继电器,arduino)
  8. C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
  9. Leetcode 1054 距离相等的条形码 (C++题解)
  10. android 版本升级