linux 多进程并发服务__关于子进程回收的方法
来源:互联网 发布:mac查看目录结构 编辑:程序博客网 时间:2024/05/29 08:20
以TCPServ 服务程序来说:
1)父进程:负责系统初始化,以及监听(listen),接受连接请求(accept);其中accept 默认阻塞调用。
2)每接受一个连接请求,动态新建(fork)一个子进程,任务完成或客户端断开,服务子进程需要退
出并收回系统资源。
3)根据linux的设计子进程的收回需要父进程参与(wait调用),而此时附进程主要服务工作在监听
客户端连接请求,同时阻塞在(accept)调用,所以父进程自身是无法"分身"去做子进程回收调用。
4)现在的问题在于如何找到父进程的一个服务入口来完成进程回收调用。
方法有2:
1)利用信号机制,由操作系统产生软中断进入进程信号服务程序,执行子进程的回收调用。
在附进程(signal/sigaction)注册SIGCHILD信号,在信号处理函数中执行waitpid调用。
疑问:信号机制可靠吗?特别是应对大频率高负载的动态请求响应场景。
2)在父进程中启动一个新的独立线程pthread,专门负责执行回收调用,此时使用wait阻塞
调用比较合适,如果使用waitpid需要不停的循环等待。注意没有子进程时wait调用立即
返回失败。(父进程在fork子进程时候,可以做一个登记).
5)在很多情况下可以考虑用多线程并发代替多进程并发,省去了很多问题。
阅读全文
0 0
- linux 多进程并发服务__关于子进程回收的方法
- linux 信号 回收子进程
- Linux下select/子进程/poll实现socket并发服务
- 回收子进程的资源
- linux多进程并发服务模型
- linux 进程的管理、子进程创建、进程资源的回收
- 【Linux】回收子进程—wait/waitpid
- linux等待所有子进程的方法
- linux 中 signal 用法回收子进程结束产生的僵尸进程
- linux 父进程中不阻塞不轮询回收子进程的两种方
- Linux父进程创建子进程的方法,监控子进程的结束
- Linux并发(子进程退出状态的处理)
- Linux并发(子进程退出状态的处理)
- 僵尸态子进程的回收
- 【IO进程】Linux C中回收线程资源的方法
- 异步回收fork出的子进程(僵尸进程)
- 异步回收fork出的子进程(僵尸进程)
- 异步回收fork出的子进程(僵尸进程)
- redis配置密码 1.通过配置文件进行配置 yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 [plain] view plain copy #requi
- Maven常见错误以及解决方案【转载】
- java反射详解
- 在JSP页面将时间戳转换成格式化日期
- Reveal :Xcode辅助界面调试工具
- linux 多进程并发服务__关于子进程回收的方法
- 图解正向代理、反向代理、透明代理
- PHP上传图片增加水印效果
- ORA-01034: ORACLE not available ORA-27101
- POJ-2282题解&数位DP总结
- 手机上如何让页面强制横屏
- Hibernate@OneToOne关联映射的三种形式
- 设计原则
- POJ 3549 Flow Problem