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.确认所有子进程都退出后,父进程也退出循环。

相关推荐
Waay1 天前
Linux Shell 知识点考评(一):grep 文本搜索(附答案)
linux·运维·服务器
jamon_tan1 天前
Linux下串口RAW模式设置
linux
碧海银沙音频科技研究院1 天前
基于VMware虚拟机ubuntu开发博通BK7258方法
linux·运维·ubuntu
云边有个稻草人1 天前
【Linux系统】进程地址空间
linux·虚拟地址空间·进程地址空间·虚拟地址空间是怎么实现的?·为什么要有虚拟地址空间?·怎么理解虚拟地址空间?
weixin_514253181 天前
511-qwen3.5-patch
服务器
谁似人间西林客1 天前
工厂大脑如何让汽车制造告别“救火式”运维?
运维·汽车·制造
飞飞传输1 天前
数字化科研提速关键 构建安全可控一体化跨网数据传输体系
大数据·运维·安全
wanhengidc1 天前
服务器中带宽的重要性
运维·服务器·网络·安全·web安全
189228048611 天前
H27QCG8T2ELR-BCF海力士H27QCG8UDBIR-BCB
大数据·服务器·人工智能·科技·缓存
云游牧者1 天前
K8S故障排查三板斧-CSDN博客
运维·docker·云原生·kubernetes·k8s·容器化·故障排查