Linux下的CGI服务器

一、概述

使用进程池,半同步/半异步并发模式。

同步进程:工作子进程负责进行具体的连接以及具体的I/O,顺序执行

异步进程:主进程监听连接事件,将连接任务分发给子线程

二、设计逻辑

1.设计进程池的创建逻辑

2.父进程监听:

  • 连接事件。处理:向子进程发送通知,让子进程接受连接
  • 信号管道(信号)。处理:执行对应的操作

3.子进程监听:

  • 与父进程的通信管道(连接事件)。处理:接受连接
  • 信号管道(信号)。处理:执行对应的操作
  • 其他读事件(客户请求)。处理:调用逻辑处理对象对应的处理函数。

4.设计逻辑处理类的事件处理函数

  • 读取度缓冲区数据,解析数据,执行对应的CGI程序

5.设计主函数

三、代码逻辑

1.创建网络连接socket并监听之

2.创建并初始化进程池

3.父子进程循环监听并处理事件(Reactor模式)

4.当父进程收到SIGINT信号或SIGTERM信号,向所有子进程发送SIGTERM信号

5.子进程收到SIGINT信号或SIGTERM信号,终止循环,从 main 函数返回,正常终止。操作系统向其父进程发送 SIGCHLD 信号,通知父进程子进程已经终止。

6.父进程收到 SIGCHLD 信号,进行对应子进程的退出收尾工作。

7.确认所有子进程都退出后,父进程也退出循环。

相关推荐
少妇的美梦16 小时前
logstash教程
运维
chen94516 小时前
k8s集群部署vector日志采集器
运维
chen94517 小时前
aws ec2部署harbor,使用s3存储
运维
轻松Ai享生活21 小时前
5 节课深入学习Linux Cgroups
linux
christine-rr21 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
三坛海会大神5551 天前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
東雪蓮☆1 天前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
qq_264220891 天前
LVS负载均衡群集和LVS+Keepalived群集
运维·负载均衡·lvs
乌萨奇也要立志学C++1 天前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
雨落Liy1 天前
Nginx 从入门到进阶:反向代理、负载均衡与高性能实战指南
运维·nginx·负载均衡