Linux中fork的使用(04)---wait模型
来源:互联网 发布:淘宝怎么设置2件包邮 编辑:程序博客网 时间:2024/06/06 12:48
环境:Vmware Workstation;CentOS-6.4-x86_64
wait说明:
1、进程一旦调用了wait,就立即阻塞自己。
2、wait会收集僵尸进程的信息,并把僵尸进程销毁后返回。
3、wait函数的定义形式:pid_t wait(int *status)
4、参数status用来保存被收集进程退出时的一些状态,它是一个指向int类型的指针。
5、WIFEXITED(status)如果子进程正常结束则为非0值。
6、WEXITSTATUS(status)取得子进程exit()返回的结束代码。
7、一般会先用WIFEXITED 来判断是否正常结束才能使用WEXITSTATUS(status)
下面是一个wait模型,代码要特别注意:
#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/wait.h>#include <stdlib.h>#include <string.h>#include <errno.h>int main(int argc, char *args[]){// 定义一个状态变量int status = 0;// 执行fork函数pid_t id = fork();// 判断是否fork成功if (id == -1){// 输出fork信息printf("Fork failed : %s\n", strerror(errno));}if (id > 0) // 执行父进程{// 调用wait函数,阻塞主进程wait(&status);// 判断子进程是否正常终止if (WIFEXITED(status) != 0){// 得到子进程的退出码printf("exit num : %d\n", WEXITSTATUS(status));}}else // 执行子进程{// 子进程休眠5秒后退出sleep(5);// 打印退出提示信息printf("son exit.\n");// 退出子进程,退出码为10exit(10);}return 0;}
编译并执行程序:
[negivup@negivup mycode]$ gcc -o main main.c[negivup@negivup mycode]$ mainson exit.exit num : 10
注意:在使用WEXITSTATUS(status)的时候,要先判断子进程是否是正常退出,使用WIFEXITED(status)判断。
PS:根据传智播客视频学习整理得出。
0 0
- Linux中fork的使用(04)---wait模型
- fork与wait的使用
- linux 中 execv, fork, wait 及 waitpid 的用法
- linux 中 execv, fork, wait 及 waitpid 的用法
- Linux中fork的使用(01)
- fork,wait,exec使用
- Linux中fork的使用(02)---fork的返回值
- Linux中fork的使用注意事项
- linux中关于fork函数的使用
- Linux中fork()函数的使用
- LINUX fork的使用
- Linux下进程管理(函数fork,wait,exec的用法)
- fork vfork exec wait使用
- fork vfork exec wait使用
- wait函数在fork创建子进程后的使用
- wait函数在fork创建子进程后的使用
- wait函数在fork创建子进程后的使用
- wait函数在fork创建子进程后的使用
- Android 裁剪图片为圆形图片
- 面试常问题目汇总
- UVa1225——Digit Counting
- js之节点属性
- BBEdit 10.X for mac的lincese
- Linux中fork的使用(04)---wait模型
- C++中接口与抽象类
- Spring实现AOP的4种方式
- 数据库事务的隔离级别
- Android 寻找xutils上传图片失败办法的路径
- 数组中出现次数超过一半的数字
- 怎样设置MyEclipse显示代码行数以及设置字体
- 王思聪出任熊猫TV CEO,视频直播为何这么火?
- YouTube推荐系统