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

有网站和无网站的区别医院线上预约

有网站和无网站的区别,医院线上预约,wordpress文章尾部,旅游搜索网站开发提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、进程创建基础概念 1. 进程与程序的关系 2. 进程创建的意义 3. 进程创建方式对比 ​编辑 二、fork函数深度解析 1. 函数原型与头文件 2. 返回值语义 3. fork执行…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

一、进程创建基础概念

1. 进程与程序的关系

2. 进程创建的意义

3. 进程创建方式对比

​编辑

二、fork函数深度解析

1. 函数原型与头文件

2. 返回值语义

3. fork执行流程

三、写时复制技术(Copy-On-Write)

1. COW工作原理

2. COW优势分析

3. 资源继承关系

四、fork高级应用场景

1. 进程池实现

2. 守护进程创建

3. 并行计算框架

五、常见问题与解决方案

1. fork失败原因及处理

2. 僵尸进程预防

3. 文件描述符管理


提示:以下是本篇文章正文内容,下面案例可供参考

一、进程创建基础概念

1. 进程与程序的关系

概念定义生命周期特点
程序存储在磁盘上的可执行文件持久存在静态代码和数据
进程正在执行的程序实例创建到终止动态实体,拥有独立资源

2. 进程创建的意义

  • 并发执行:多个任务同时运行

  • 资源隔离:错误不会影响其他进程

  • 模块化设计:分离关注点

  • 服务扩展:多进程处理请求

3. 进程创建方式对比

创建方式使用场景资源开销执行效率
fork()创建相似进程中等(COW优化)
exec()加载新程序
clone()线程/轻量进程最高
system()执行Shell命令

二、fork函数深度解析

1. 函数原型与头文件

  

​
#include <unistd.h>pid_t fork(void);​

2. 返回值语义

3. fork执行流程

​
// 示例代码
#include <unistd.h>
#include <stdio.h>int main() {printf("准备创建进程 (PID=%d)\n", getpid());pid_t pid = fork();if(pid == 0) {// 子进程执行区printf("子进程运行中 (PID=%d, PPID=%d)\n", getpid(), getppid());} else if(pid > 0) {// 父进程执行区printf("父进程创建了子进程 %d (PID=%d)\n", pid, getpid());} else {perror("fork失败");return 1;}printf("此消息来自 %s (PID=%d)\n", pid == 0 ? "子进程" : "父进程", getpid());return 0;
}​

执行流程详解

  1. 父进程执行到fork()系统调用

  2. 内核创建子进程的PCB(进程控制块)

  3. 复制父进程的地址空间(使用COW技术)

  4. 设置子进程的返回值为0

  5. 设置父进程的返回值为子进程PID

  6. 调度器选择执行父进程或子进程

三、写时复制技术(Copy-On-Write)

1. COW工作原理

父进程空间        子进程空间
[代码段] --------- [代码段](共享)
[数据段] --初始共享-- [数据段]|                 || 父进程修改       | 子进程修改V                 V
[新数据段]         [新数据段]

2. COW优势分析

  • 内存效率:避免不必要的复制

  • 速度优化:fork操作几乎瞬间完成

  • 资源节省:共享只读代码段

  • 安全性:进程间天然隔离

3. 资源继承关系

资源类型继承行为共享状态
文件描述符复制但共享文件偏移
内存映射复制但共享物理页
信号处理继承设置
环境变量完全复制
当前目录完全复制

四、fork高级应用场景

1. 进程池实现

​
#define WORKER_COUNT 5int main() {for(int i = 0; i < WORKER_COUNT; i++) {pid_t pid = fork();if(pid == 0) {// 工作进程worker_process(i);exit(0); // 工作完成后退出} else if(pid < 0) {perror("创建工作进程失败");break;}}// 父进程等待所有子进程while(wait(NULL) > 0);return 0;
}void worker_process(int id) {printf("工作进程 %d 启动 (PID=%d)\n", id, getpid());// 执行具体任务...
}​

2. 守护进程创建

​
int main() {pid_t pid = fork();if(pid < 0) {exit(EXIT_FAILURE);} else if(pid > 0) {// 父进程退出exit(EXIT_SUCCESS);}// 子进程成为守护进程setsid(); // 创建新会话chdir("/"); // 更改工作目录umask(0); // 重设文件权限掩码// 关闭所有文件描述符for(int fd = sysconf(_SC_OPEN_MAX); fd >= 0; fd--) {close(fd);}// 守护进程主循环while(1) {perform_daemon_task();sleep(60);}
}​

3. 并行计算框架

​
#define TASK_COUNT 10int main() {int results[TASK_COUNT];for(int i = 0; i < TASK_COUNT; i++) {if(fork() == 0) {// 子进程计算结果int res = compute_task(i);exit(res); // 退出码传递结果}}// 父进程收集结果for(int i = 0; i < TASK_COUNT; i++) {int status;pid_t pid = wait(&status);if(WIFEXITED(status)) {results[i] = WEXITSTATUS(status);}}// 处理最终结果process_results(results);return 0;
}​

五、常见问题与解决方案

1. fork失败原因及处理

错误代码原因解决方案
EAGAIN进程数超限增加进程限制或减少fork次数
ENOMEM内存不足优化内存使用或添加物理内存
ENOSYS系统不支持fork检查系统配置
​
// 错误处理示例
pid_t pid = fork();if(pid < 0) {switch(errno) {case EAGAIN:fprintf(stderr, "系统资源不足,请稍后重试\n");break;case ENOMEM:fprintf(stderr, "内存不足,无法创建进程\n");break;default:perror("未知fork错误");}exit(EXIT_FAILURE);
}​

2. 僵尸进程预防

​
// 信号处理法
signal(SIGCHLD, SIG_IGN); // 忽略子进程退出信号// 或使用waitpid非阻塞回收
while(1) {pid_t pid = waitpid(-1, &status, WNOHANG);if(pid <= 0) break;printf("子进程 %d 已回收\n", pid);
}​

3. 文件描述符管理

​
// 安全关闭不需要的文件描述符
pid_t pid = fork();
if(pid == 0) {close(unused_fd); // 子进程关闭父进程不需要的fd// ...
} else {close(child_only_fd); // 父进程关闭子进程需要的fd// ...
}​

http://www.dtcms.com/wzjs/325207.html

相关文章:

  • 网站建设费入什么科目湖南靠谱关键词优化
  • 南通优普网站建设制作官网建站多少钱
  • 做网站的方法搜索网络如何制造
  • 做企业网站应该注意什么广州做网站的公司哪家好
  • 海星wap建站品牌推广经典案例
  • 南昌专业网站建设公司关键词优化设计
  • 建筑行业征信查询平台官网绍兴seo推广
  • 快件网站建设万网官网
  • 域名和网站建设实训报告网页怎么做出来的
  • 网站建设及经营应解决好的问题站长之家怎么用
  • 都江堰市建设局网站武汉网站制作推广
  • 小微平台杭州seo网站排名优化
  • 自己怎么做网站赚钱北京网站营销seo方案
  • 网站和app可以做充值余额功能公众号开发
  • 宠物网站模版微信营销管理软件
  • 施工企业既搞建筑安装又搞建筑材料销售其应纳税种为网站优化推广费用
  • 黑客网站网址入口免费发软文的网站
  • 谁有做那事的网站网站推广的常用方法有哪些?
  • 石家庄学网站建设如何开发自己的小程序
  • 中建二局核电建设分公司网站百度竞价推广托管
  • 上海专业建设网站软件培训班
  • 深圳网站开发教程百度安装免费下载
  • b2c商城系统开发营销网站优化推广
  • 网站开发补充合同范本抖音seo关键词优化排名
  • 个人网站做打赏流程推广方案
  • 开拓网站建设免费网络空间搜索引擎
  • 建设部人事教育司网站有哪些可以免费推广的平台
  • 能用的网站最新社会舆情信息
  • 中安消防安全网站建设无忧seo博客
  • 网站建设教程软件精准的搜索引擎优化