news 2026/10/13 11:01:47

系统编程—进程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/10/12 3:56:59

m3u8视频下载器完整教程:零基础快速掌握网页视频保存技巧

m3u8视频下载器完整教程:零基础快速掌握网页视频保存技巧 【免费下载链接】m3u8-downloader m3u8 视频在线提取工具 流媒体下载 m3u8下载 桌面客户端 windows mac 项目地址: https://gitcode.com/gh_mirrors/m3u8/m3u8-downloader m3u8视频下载器是一款专业的…

作者头像 李华
网站建设 2026/10/13 3:04:32

【代码分享】考虑电池储能寿命损耗和电价型需求响应的微电网经济调度【代码分享】基于模糊机会约束的电力系统低碳优化调度

程序名称:考虑电池储能寿命损耗和电价型需求响应的微电网经济调度 实现平台:matlab-yalmip-gurobi/cplex 代码简介:电池储能寿命模型参考文献《考虑寿命损耗的微网电池储能容量优化配置》模型,以购售电成本、燃料成本和储能寿命…

作者头像 李华
网站建设 2026/10/13 4:02:09

3分钟搞定洛雪音乐六音音源修复:完美恢复音乐播放体验

3分钟搞定洛雪音乐六音音源修复:完美恢复音乐播放体验 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 还在为洛雪音乐升级后无法播放音乐而烦恼吗?六音音源修复版为您带来…

作者头像 李华
网站建设 2026/10/13 4:19:27

Nugget命令行下载工具:5个理由让您爱上极速文件获取

Nugget命令行下载工具:5个理由让您爱上极速文件获取 【免费下载链接】nugget minimalist wget clone written in node. HTTP GET files and downloads them into the current directory 项目地址: https://gitcode.com/gh_mirrors/nu/nugget 在信息爆炸的时代…

作者头像 李华
网站建设 2026/10/13 2:11:04

跨平台文件传输不再难:Mac免费解锁NTFS全攻略

你是否曾经遇到过这样的困扰:从Windows电脑复制文件到U盘,插到Mac上却发现只能看不能改?这种尴尬的跨平台文件传输问题,让无数Mac用户头疼不已。今天,就让我带你彻底解决这个痛点,让你的Mac完美支持NTFS格式…

作者头像 李华
网站建设 2026/10/12 1:49:51

内容解锁神器终极指南:5步轻松绕过付费墙限制

内容解锁神器终极指南:5步轻松绕过付费墙限制 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 想要免费阅读被付费墙阻挡的精彩内容吗?在这个信息获取成本不断攀…

作者头像 李华