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)若为异常结束子进程返回的状态,则为真

当然,处理进程退出状态的宏并不止这两个,但它们当中的绝大部分在平时的编程中很少用到。
转载:http://blog.sina.com.cn/s/blog_636a55070101wtp5.html

转载于:https://www.cnblogs.com/jikexianfeng/p/6312768.html

WIFEXITED WEXITSTATUS WIFSIGNALED(转)相关推荐

  1. WIFEXITED WEXITSTATUS WIFSIGNALED

    http://blog.sina.com.cn/s/blog_636a55070101wtp5.html wait的函数原型是: #include #include pid_t wait(int *s ...

  2. system()与WIFEXITED/WEXITSTATUS/WIFSIGNALED

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

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

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

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

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

  5. C 库函数 system/WIFEXITED/WEXITSTATUS

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

  6. system/WIFEXITED/WEXITSTATUS函数-linux

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

  7. wait, WIFEXITED, WEXITSTATUS

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

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

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

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

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

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

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

最新文章

  1. apache 开启 gzip 压缩服务
  2. html5设置文字不能复制,网页文字不能复制?巧解网页文字不能复制
  3. 连接器篇(二) 高频系列
  4. 计算机组成原理码质变换,计算机组成原理负数的8421码
  5. centos6.5 scala环境变量
  6. HTML/CSS——网页SVG ICON(小图标)解决方案
  7. pyppeteer(python版puppeteer)基本使用
  8. Linux使用tcpdump抓获取WIFI包
  9. 让自己的网站可以被搜索
  10. 计算机用三角函数时如何用弧度制,5.1.2弧度制教学设计
  11. catia投图只投外轮廓线_catia作图小技巧
  12. Spring MVC ajax请求
  13. 三菱q系列plc 和电脑socket_组态王和三菱Q系列PLC以太网通信
  14. 韦恩图——你学会了吗?
  15. TransUnet官方代码训练自己数据集(彩色RGB3通道图像的分割)
  16. shell一键安装lnmp
  17. 19个相见恨晚的黑客技在线学习网站,你离黑客又近了一步
  18. Java 多态实际操练--使用多态的特征创建不同宠物的玩耍方法
  19. 全球名校AI课程库(43)| 李宏毅 · 机器学习(深度学习)课程『Machine Learning』
  20. vc2017+opencv4.1.0配置

热门文章

  1. 跟公司妹子交流了一下
  2. 拼多多的硬核逆生长!
  3. pythonforeverybody中文版_PyTorch实现EverybodyDanceNow
  4. u3d_shader_surface_shader_2
  5. Python 获取URL访问的HEAD头信息
  6. win32多线程(三) 死锁
  7. How to study Watir?
  8. 也玩ASP.NET MVC 与 WebFroms 整合
  9. 释放被束缚的页面 – V1.1.0
  10. 经典中的经典ftp问题,终于解决