news 2026/9/2 20:29:27

系统编程—进程2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
系统编程—进程2

一、进程关系与写时复制

子进程是父进程的一个复制品(副本)。

写时复制:Linux2.6及后续版本中,子进程通过fork创建时采用写时复制机制:fork刚完成时,子进程并不单独开辟空间,而是与父进程共享全部内存;仅当父子进程中任意一个修改某变量或内存区域,子进程才会为该部分内存开辟独立空间,实现按需复制。

二、进程的终止情况

1.main中return :触发进程退出,return 的值作为进程退出码

2.exit() c库函数,会执行io库的清理工作,关闭所有的流,以及所有打开的文件。

3._exit_Exit 会关闭所有的已经打开的文件,不执行清理函数。

4.主线程退出:主线程执行完毕退出,导致整个进程终止

5.主线程调用pthread_exit 异常终止

6.abort():主动触发 SIGABRT 信号,强制终止进程

7.signal kill pid :通过信号(如 SIGKILL/SIGTERM 等)终止进程

8.最后一个线程被pthread _cancle :取消最后一个存活线程,导致进程终止

三、退出后的进程

1.僵尸进程:父进程创建子进程后,子进程先消亡。对应用户内存空间释放,子进程也不会被调度了。但是内核空间中的对应的pcb块,没有释放。

2.孤儿进程:父进程创建子进程后,父进程先消亡。子进程会寻找新的父进程。

四、退出函数

1.exit函数

功能:让进程退出,并刷新缓存区

参数:status:进程退出的状态。

void exit(int status) exit(1);

2._exit 系统调用

功能:让进程退出,不刷新缓存区

参数:status:进程退出的状态。

void _exit(int status);

3.pid_t wait 函数

pid_t wait(int *status);

功能:该函数可以阻塞等待任意子进程退出
并回收该进程的状态。
只能父进程回收子进程状态。
参数:status 进程退出时候的状态
如果不关心其退出状态一般用NULL表示
如果要回收进程退出状态,则用WEXITSTATUS回收。
WIFEXITED(status) :是不是正常结束
WEXITSTATUS(status): 使用这个宏去那返回值
WIFSIGNALED(status) :是不是收到了信号而终止的
WTERMSIG(status):如果是信号终止的,那么是几号信号。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:04:41

LyricsX桌面歌词插件终极使用指南:3步打造专业级音乐体验

LyricsX桌面歌词插件终极使用指南:3步打造专业级音乐体验 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 还在为macOS上找不到完美的桌面歌词显示方案而烦恼吗…

作者头像 李华
网站建设 2026/9/2 2:03:00

ViGEmBus虚拟手柄驱动:Windows游戏控制的终极解决方案

ViGEmBus虚拟手柄驱动:Windows游戏控制的终极解决方案 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 想要在Windows系统中实现专业级的游戏控制体验吗?ViGEmBus虚拟手柄驱动为你打开了无限可能!…

作者头像 李华
网站建设 2026/9/2 22:03:28

计算机毕业设计springboot宠物领养系统 基于 SpringBoot 的流浪动物救助与领养平台 前后端分离的宠物公益领养服务系统

计算机毕业设计springboot宠物领养系统6eq0h3ik (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当“领养代替购买”成为越来越多年轻人的共识,却仍有不少人因为信息分…

作者头像 李华
网站建设 2026/9/2 12:14:50

AMD Ryzen处理器终极性能优化指南:简单三步掌握电源管理技巧

AMD Ryzen处理器终极性能优化指南:简单三步掌握电源管理技巧 【免费下载链接】RyzenAdj Adjust power management settings for Ryzen APUs 项目地址: https://gitcode.com/gh_mirrors/ry/RyzenAdj 想要充分发挥你的AMD Ryzen处理器性能潜力吗?Ry…

作者头像 李华
网站建设 2026/9/2 23:53:19

Vue PDF组件快速上手:零基础3分钟完成PDF文档嵌入

Vue PDF组件快速上手:零基础3分钟完成PDF文档嵌入 【免费下载链接】vue-pdf-embed PDF embed component for Vue 2 and Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vue-pdf-embed 还在为Vue项目中集成PDF预览功能而烦恼吗?vue-pdf-embed…

作者头像 李华
网站建设 2026/9/2 22:46:03

英雄联盟云顶之弈智能助手:全自动刷经验终极指南

英雄联盟云顶之弈智能助手:全自动刷经验终极指南 【免费下载链接】LOL-Yun-Ding-Zhi-Yi 英雄联盟 云顶之弈 全自动挂机刷经验程序 外挂 脚本 ,下载慢可以到https://gitee.com/stringify/LOL-Yun-Ding-Zhi-Yi 项目地址: https://gitcode.com/gh_mirrors/lo/LOL-Yun…

作者头像 李华