Linux网络编程——进程池实现过程详解
Posted mered1th
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络编程——进程池实现过程详解相关的知识,希望对你有一定的参考价值。
进程池
父进程的实现流程
1、定义数据结构pChild,申请子进程数目的结构体空间
2、通过循环,socketpair创建全双工管道,创建子进程,将子进程pid,管道对端,是否忙碌等信息存储
3、socket,bind,listen,对应的端口处于监听状态 netstat
4、epoll_create创建epfd,监控socketFd和所有子进程的管道对端
5、while(1)循环 epoll_wait等待客户端的请求及子进程是否有通知
如果socketFd可读,说明是客户端有连接请求,accept对应连接请求,得到new_fd,循环遍历,找到非忙碌的子进程,将new_fd发送给对应子进程,将对应子进程标识为忙碌,然后父进程关闭new_fd。
判断就绪的描述符 是哪个子进程的管道对端,就将对应子进程标识为非忙碌,同时读出管道内数据。
子进程的实现流程
while(1)
{
1、接收任务,得到newFd
2、通过newFd给客户端发送文件
3、关闭newFd
4、通过写管道,通知父进程完成文件下载任务
}
详细代码见下篇。
Linux网络编程——进程池实现过程详解(2)
以上是关于Linux网络编程——进程池实现过程详解的主要内容,如果未能解决你的问题,请参考以下文章