网站开发合同 中英文哈尔滨做网站优化

张小明 2026/1/11 5:16:27
网站开发合同 中英文,哈尔滨做网站优化,做电子请柬的网站,湖北住房城乡建设厅网站首页在 Linux C/C 开发中#xff0c;进程管理是系统编程的核心知识点之一。从父子进程的创建、进程的终止到僵尸进程的避免#xff0c;每一个环节都影响着程序的稳定性。本文将从基础概念到实践代码#xff0c;详细讲解 Linux 进程管理的关键技术。一、父子进程#xff1a;写时…在 Linux C/C 开发中进程管理是系统编程的核心知识点之一。从父子进程的创建、进程的终止到僵尸进程的避免每一个环节都影响着程序的稳定性。本文将从基础概念到实践代码详细讲解 Linux 进程管理的关键技术。一、父子进程写时复制的 “副本关系”当我们通过fork()创建子进程时子进程是父进程的 “复制副本”—— 但在现代 Linux2.6 版本后如 Ubuntu 18.04 使用的 Linux 5.4 内核中这个 “复制” 并非完全拷贝而是采用了 ** 写时复制Copy-on-WriteCOW** 机制初始状态子进程与父进程共享同一块内存空间包括代码段、数据段、堆、栈内核仅为子进程创建独立的 PCB进程控制块。写操作触发拷贝当子进程修改某块内存如变量、数组时内核才会为子进程分配新的内存空间并将修改的内容拷贝到新空间中实现 “按需拷贝”。这种机制既节省了内存资源又提升了fork()的效率。二、进程的终止8 种情况分类进程的终止分为 “正常终止” 和 “异常终止” 两类共 8 种场景终止类型具体场景说明正常终止1.main函数中执行return会触发进程退出返回值作为进程退出状态2. 调用exit()函数库函数会执行 I/O 清理刷新缓存、关闭打开的文件再终止进程3. 调用_Exit()函数系统调用仅关闭打开的文件不执行 I/O 清理缓存数据会丢失4. 主线程退出主线程结束后进程会随之终止5. 主线程调用pthread_exit仅主线程退出进程不会终止需所有线程结束异常终止6. 调用abort()函数触发SIGABRT信号强制进程终止7. 通过signal/kill发送终止信号如kill -9 pid强制杀死进程8. 最后一个线程被pthread_cancel取消所有线程结束后进程终止三、退出后的进程僵尸与孤儿进程退出后并非直接 “消失”而是会进入特殊状态1. 僵尸进程Zombie Process产生条件父进程创建子进程后子进程先退出但父进程未调用wait/waitpid回收子进程。表现子进程的用户内存已释放但内核中的 PCB包含进程 PID、退出状态等未被释放进程状态标识为Z可通过ps aux | grep Z查看。危害长期积累的僵尸进程会占用内核内存导致系统资源不足、稳定性下降。2. 孤儿进程Orphan Process产生条件父进程创建子进程后父进程先退出子进程会被系统进程如init、systemd接管。表现子进程的新父进程会自动回收其资源因此孤儿进程不会造成资源泄漏无需额外处理。四、进程退出函数exit 与_exit 的区别进程退出的核心函数是exit库函数和_exit系统调用二者的差异是面试高频考点函数类型核心行为适用场景exit(int status)库函数1. 执行atexit注册的清理函数2. 刷新 I/O 缓存3. 关闭打开的文件4. 调用_exit终止进程需保证数据完整写入如文件操作后_exit(int status)系统调用1. 关闭打开的文件2. 直接终止进程不处理缓存 / 清理函数紧急退出如信号处理函数中示例c运行#include stdio.h #include stdlib.h #include unistd.h int main() { printf(使用exit退出会刷新缓存); exit(EXIT_SUCCESS); // 输出会被打印 } // 对比 int main() { printf(使用_exit退出不刷新缓存); _exit(EXIT_SUCCESS); // 输出不会被打印缓存未刷新 }五、进程回收wait/waitpid 解决僵尸问题为了避免僵尸进程父进程必须主动回收子进程核心函数是wait和waitpid。1. wait 函数c运行pid_t wait(int *status);功能阻塞等待任意一个子进程退出并回收其 PCB。参数status存储子进程的退出状态若不需要传NULL。返回值成功返回被回收子进程的 PID失败返回-1如无待回收子进程。解析退出状态需通过宏函数提取status中的信息WIFEXITED(status)判断子进程是否正常退出返回非 0 表示正常。WEXITSTATUS(status)提取子进程的退出值仅当WIFEXITED为真时有效。WIFSIGNALED(status)判断子进程是否被信号终止。WTERMSIG(status)提取终止子进程的信号编号。2. 实践代码回收子进程并处理退出状态c运行#include stdio.h #include stdlib.h #include unistd.h #include sys/wait.h int main() { pid_t pid fork(); if (pid -1) { perror(fork失败); exit(1); } if (pid 0) { // 子进程执行任务后退出 printf(子进程(pid%d)执行中...\n, getpid()); sleep(2); exit(5); // 正常退出退出值为5 } else { // 父进程回收子进程 int status; pid_t child_pid wait(status); if (child_pid -1) { perror(wait失败); exit(1); } // 解析退出状态 if (WIFEXITED(status)) { printf(回收子进程(pid%d)退出值%d\n, child_pid, WEXITSTATUS(status)); } else if (WIFSIGNALED(status)) { printf(回收子进程(pid%d)被信号%d终止\n, child_pid, WTERMSIG(status)); } } return 0; }运行结果plaintext子进程(pid12345)执行中... 回收子进程(pid12345)退出值53. 批量回收waitpid 循环处理多子进程若父进程创建了多个子进程需循环调用waitpid回收所有子进程c运行// 循环回收所有子进程 while (waitpid(-1, status, WNOHANG) 0) { // 处理退出状态... }waitpid(-1, status, WNOHANG)-1表示回收任意子进程WNOHANG表示非阻塞无待回收子进程时直接返回 0。六、实战如何查看僵尸进程通过ps或top命令可查看系统中的僵尸进程ps 命令bash运行ps aux | grep Z输出中状态为Z的进程即为僵尸进程。top 命令进入top后按z可高亮显示僵尸进程或查看 “Zombie” 统计项若大于 0说明存在僵尸进程。总结Linux 进程管理的核心是 “创建 - 终止 - 回收” 的闭环用fork()创建子进程利用写时复制节省资源子进程通过exit/_exit正常退出或被信号异常终止父进程必须通过wait/waitpid回收子进程避免僵尸进程孤儿进程由系统接管无需额外处理。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

佛山乐从网站建设做淘宝必备网站

学术会议征稿通知生成器:组织者的好帮手 在每年成千上万场学术会议的筹备过程中,有一项任务几乎雷打不动地重复出现:撰写征稿通知(Call for Papers, CFP)。无论是顶级国际会议还是区域性研讨会,组织者都得从…

张小明 2026/1/7 20:37:51 网站建设

做护理简历的网站wordpress 登入页面

接触力学与摩擦学原理详解与技术应用指南 【免费下载链接】接触力学与摩擦学原理及其应用 接触力学与摩擦学原理及其应用欢迎来到本资源库!这里为您提供了一份珍贵的学习资料——《接触力学与摩擦学的原理及其应用》PDF电子书的压缩包 项目地址: https://gitcode.…

张小明 2026/1/9 12:39:27 网站建设

做暧视频网站大全阿里巴巴国际贸易网站

编程字体终极选择指南:5个关键因素决定你的编码效率 【免费下载链接】maple-font Maple Mono: Open source monospace font with round corner, ligatures and Nerd-Font for IDE and command line. 带连字和控制台图标的圆角等宽字体,中英文宽度完美2:1…

张小明 2026/1/7 22:28:53 网站建设

chn域名网站用vue.js做网站的好处

告别命令行!这款Hyper-V可视化工具让设备直通变得如此简单 【免费下载链接】DDA 实现Hyper-V离散设备分配功能的图形界面工具。A GUI Tool For Hyper-Vs Discrete Device Assignment(DDA). 项目地址: https://gitcode.com/gh_mirrors/dd/DDA 你是否曾经为配…

张小明 2026/1/7 22:28:51 网站建设

自己做一元购网站网站建设与维护1997年

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 设计一个极简的Dify项目Docker原型方案,要求:1. 最大程度简化配置 2. 保留核心功能验证能力 3. 支持单命令启动 4. 包含示例测试数据 5. 提供快速清理方案。…

张小明 2026/1/7 22:28:49 网站建设

网站建设申请方案文样网页设计教程这本书讲什么

一、多分类策略 逻辑回归处理多分类主要有三种策略: OvR(One-vs-Rest) 为每个类别训练一个二分类器 预测时选择概率最高的类别 Scikit-learn默认使用此方法 OvO(One-vs-One) 为每对类别训练一个分类器 适合类别较少但样…

张小明 2026/1/7 22:28:48 网站建设