WIFEXITED WEXITSTATUS WIFSIGNALED
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相关推荐
- system()与WIFEXITED/WEXITSTATUS/WIFSIGNALED
system()用于执行shell命令 头文件 #i nclude<stdlib.h> 函数定义 int system(const char *command) ; 函数说明 system ...
- wait获取子进程退出状态 WIFEXITED和WIFSIGNALED用法
可以使用wait函数传出参数status来保存进程的退出状态. 常用宏函数分为日如下几组: 1. WIFEXITED(status) 若此值为非0 表明进程正常结束. 若上宏为真,此时可通过WEXIT ...
- Linux进程控制:wait获取子进程退出状态 WIFEXITED和WIFSIGNALED用法
可以使用wait函数传出参数status来保存进程的退出状态. 常用宏函数分为日如下几组: 1. WIFEXITED(status) 若此值为非0 表明进程正常结束. 若上宏为真,此时可通过WEXIT ...
- C 库函数 system/WIFEXITED/WEXITSTATUS
文章目录 描述 声明 参数 返回值 实例 WIFEXITED/WEXITSTATUS函数 systerm两层含义 函数实例 详解解释 参考资料 描述 C 库函数 int system(const ch ...
- system/WIFEXITED/WEXITSTATUS函数-linux
system原型: 参数是命令, 命令行里敲的shell命令. 通过fork创建子进程后,在子进程中调用execl 来执行唤起 shell 进程 从而执行shell命令. systerm两层含义: 1 ...
- wait, WIFEXITED, WEXITSTATUS
wait的函数原型是: #include <sys/types.h> /* 提供类型pid_t的定义 */ #include <sys/wait.h> pid_t wait(i ...
- Linux下wait, WIFEXITED, WEXITSTATUS的比较
偶尔翻到了这几个关键字,找到个文章复习了下:"http://www.ibm.com/developerworks/cn/linux/kernel/syscall/part3/".记 ...
- 14.system/WIFEXITED/WEXITSTATUS函数-linux
system: 感性认识: systerm两层含义: 1.正确退出后.还需要再判断,操作成功或者操作失败. 2.错误退出. [cpp] view plaincopy #include <stdi ...
- 父进程等待子进程终止 wait, WIFEXITED, WEXITSTATUS
wait()的函数原型是: #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status) [一 ...
最新文章
- nginx http proxy 正向代理
- odoo 自定义视图_如何使用Windows的五个模板自定义文件夹视图
- leetcode1424. 对角线遍历 II(排序)
- admin后台菜单栏的实现
- php mysql 非空_PHP-为什么mysql接受非空字段为null
- Nginx+keepalive反向代理
- multisim页面不够大_微信订阅号页面改版,iOS 14.2存在严重耗电问题,贾跃亭再成被执行人,特斯拉回应被判欺诈,这就是今天的其他大新闻!...
- 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_2 响应之返回值是String类型...
- php中使用sftp教程,php 中的sftp 使用教程_PHP教程
- WinMTR 0.9.2 绿色免费版
- 百度:一盗功成万网枯
- dos下的硬盘检测工具MHDD图文教程
- linux hosts的allow和deny
- 万字长文细说 Code Review 的正确姿势
- 成长的旅途,未知的邂逅
- 初识——雷达通信一体化技术
- html 盒子模型添加图片,[HTML/CSS]盒子模型,块级元素和行内元素
- Dynasty Puzzles CodeForces - 191A+DP二维
- 深大算法设计与分析实验二——分治法求最近点对问题
- MATLAB experiment<6>
热门文章
- power designer概述
- 深圳星级用户破坏计算机信息罪,警方破获一起涉嫌破坏计算机信息系统案
- 一.《UE4奥丁》人物最大属性
- 宝塔Linux面板 - 4月11日更新 - 5.8.7免费版
- Android进阶——性能优化之内存管理机制和垃圾采集回收机制(六)
- P2800 又上锁妖塔
- 智能插座的制作(esp01,继电器,arduino)
- C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- Leetcode 1054 距离相等的条形码 (C++题解)
- android 版本升级