父进程异步等待子进程
来源:互联网 发布:高性能linux服务器 编辑:程序博客网 时间:2024/06/04 19:01
父进程自定义SIGCHLD信号的处理函数,并采用非阻塞方式等待,当子进程退出时,会向父进程发送信号,父进程会进行回收。
当有10个子进程退出时,会给父进程发送10个信号,但由于只会记录一次,所以只能回收一次,我们让父进程一直回收,当子进程全部被回收,waitpid()返回-1,跳出循环。
#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/wait.h>#include <signal.h>void catchsig(int sig){ do { pid_t ret = waitpid(-1, NULL, WNOHANG); if(ret > 0) { printf("wait success:%d\n", ret); } else { printf("wait failed:%d\n", ret); break; } } while(1);}//验证子进程退出时会给父进程发送信号/*void catchsig(int sig){ printf("i am %d signal\n", sig);}*/int main(){ signal(SIGCHLD, catchsig); pid_t id = fork(); if(id == 0) { printf("i am child ,quit!pid:%d\n", getpid()); exit(1); } else { while(1) { printf("i am father,runing!\n"); sleep(1); } } return 0;}
因为只有一个子进程,所以只会等待一次。
阅读全文
0 0
- 父进程异步等待子进程
- 子进程异步等待
- 子进程异步等待方式
- 子进程的异步等待
- 子进程的异步等待
- 子进程异步等待方式
- 父进程等待子进程的异步版本
- 父进程等待子进程的异步版
- Linux父进程对于子进程的异步等待
- Linux下父进程异步等待子进程
- 父进程等待子进程的异步版本
- 进程等待及子进程异步等待方式
- 子进程的异步等待方式
- SIGCHLD--子进程的异步等待
- 子进程的异步等待方式
- Linux子进程的异步等待方式
- Linux----子进程的异步等待方式
- 子进程的异步等待方式
- Android 蓝牙开发-蓝牙通信
- 杨辉三角的Kotlin实现
- Eclipse工程导入Android Studio遇到的问题及解决方法
- 部分代码对比
- Linux应急命令
- 父进程异步等待子进程
- APUE之进程笔记(上)
- linux进程间通信-信号量(semaphore)
- 给BurpSuite的python扩展产生.class文件
- 如何用pyinstaller将需要传参数的Python文件生成exe文件
- UNIX再学习 -- 网络与网络协议
- Redis学习笔记-Redis安装部署
- 为什么 idea 编辑代码无效
- Pyramid of Glasses 酒杯金字塔 [CF-676B]