当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/114407.html

相关文章:

  • 后端开发3.Fastdfs的搭建
  • 目标检测与跟踪 (3)- TensorRTYOLO V8性能优化与部署测试
  • SAS-数据集SQL垂直(纵向)合并
  • SpringBoot3 整合Prometheus + Grafana
  • Python实现GA遗传算法优化LightGBM回归模型(LGBMRegressor算法)项目实战
  • 【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】
  • 资深测试老鸟整理,性能测试-常见调优详细,卷起来...
  • 【第五章 flutter学习之flutter进阶组件-上篇】
  • 鸿蒙边缘计算网关正式开售
  • Bytebase 2.5.0 - VCS 集成支持 Azure DevOps,支持达梦数据库
  • tomcat通过systemctl启动时报错Cannot find /usr/local/tomcat/bin/setclasspath.sh
  • Django架构图
  • vue- 创建wms-web项目
  • 集成学习:机器学习模型如何“博采众长”
  • 排序算法(二)
  • CVPR 2023 | 无监督深度概率方法在部分点云配准中的应用
  • HTTP隧道识别与防御:机器学习的解决方案
  • 【MMU】认识 MMU 及内存映射的流程
  • Clion开发Stm32之存储模块(W25Q64)驱动编写
  • SpringBoot动态切换数据源
  • [C++项目] Boost文档 站内搜索引擎(4): 搜索的相关接口的实现、线程安全的单例index接口、cppjieba分词库的使用、综合调试...
  • SAP ABAP元素域值描述通过函数(DD_DOMVALUE_TEXT_GET)获取
  • 原型模式与享元模式:提升系统性能的利器
  • uniapp封装手写签名
  • 掌握 JVM 调优命令
  • 扩增子分析流程——Lotus2: 一行命令完成所有分析
  • 微服务 云原生:搭建 Harbor 私有镜像仓库
  • Ceph入门到精通-远程开发Windows下使用SSH密钥实现免密登陆Linux服务器
  • APP外包开发的开发语言对比
  • 基于Python++PyQt5马尔科夫模型的智能AI即兴作曲—深度学习算法应用(含全部工程源码+测试数据)