简单的waitpid函数的使用。
来源:互联网 发布:中国f1车队知乎 编辑:程序博客网 时间:2024/05/30 05:42
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>#include <sys/wait.h>void die(const char *msg){perror(msg);exit(1);}void child2_do(){printf("In child2: execute 'date'\n");sleep(5); if (execlp("date", "date", NULL) < 0) {perror("child2 execlp"); }}void child1_do(pid_t child2, char *argv){pid_t pw;do{if (*argv == '1') {pw = waitpid(child2, NULL, 0);} else {pw = waitpid(child2, NULL, WNOHANG); } if (pw == 0) {printf("In child1 process:\nThe child2 process has not exited!\n"); sleep(1); } }while (pw == 0);if (pw == child2) {printf("Get child2 %d.\n", pw); sleep(5);if (execlp("pwd", "pwd", NULL) < 0) {perror("child1 execlp"); } } else {printf("error occured!\n"); }}void father_do(pid_t child1, char *argv){pid_t pw;do {if (*argv == '1') {pw = waitpid(child1, NULL, 0); } else { pw = waitpid(child1, NULL, WNOHANG); }if (pw == 0) { printf("In father process:\nThe child1 process has not exited.\n");sleep(1); } }while (pw == 0);if (pw == child1) {printf("Get child1 %d.\n", pw); if (execlp("ls", "ls", "-l", NULL) < 0) {perror("father execlp"); } } else {printf("error occured!\n"); }}int main(int argc, char *argv[]){pid_t child1, child2;if (argc < 3) { printf("Usage: waitpid [0 1] [0 1]\n"); exit(1); } child1 = fork(); if (child1 < 0){ die("child1 fork"); } else if (child1 == 0) { child2 = fork(); if (child2 < 0) { die("child2 fork"); }else if (child2 == 0) {child2_do(); }else { child1_do(child2, argv[1]);} } else {father_do(child1, argv[2]); } return 0;}
0 0
- 简单的waitpid函数的使用。
- waitpid函数的使用
- kill waitpid与wait函数的使用
- 函数wait与waitpid的使用
- linux的waitpid函数
- LINUX waitpid()函数的用法
- SIGCHLD和waitpid的使用
- SIGCHLD和waitpid的使用
- SIGCHLD和waitpid的使用
- SIGCHLD和waitpid的使用
- wait 和waitpid 的使用
- wait/waitpid函数使用
- waitpid函数使用
- wait waitpid函数使用
- wait和waitpid函数的相关知识
- Linux中waitpid()函数的用法
- 关于waitpid的使用问题,记录下
- linux下的wait函数和waitpid函数介绍
- 分本分类(六):使用LDA+SVM进行文本分类
- swift3.0集成友盟分享sdk_6.0.3(二)
- Deep Learning & Machine Learning
- bzoj 2442: [Usaco2011 Open]修剪草坪 单调队列优化dp
- 关于解决安装ubuntu双系统中出现的不能识别磁盘分区、空闲空间变不可用问题
- 简单的waitpid函数的使用。
- virtualenv安装tensorflow
- Hibernate之基本配置测试用例
- Android Studio的侧滑Demo
- 勿以浮沙筑高台
- 旋转的风车—利用css3新属性
- JDK1.5--)很重要的特性——泛型
- http协议学习
- 算法总结(一) 算法分析