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

系统编程—进程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):如果是信号终止的,那么是几号信号。

http://www.jsqmd.com/news/89829/

相关文章:

  • 暗黑破坏神2存档编辑器:从零到精通的完全实战指南
  • KKManager完整使用指南:3步轻松管理游戏Mod
  • 如何用SpiffWorkflow快速构建Python业务流程自动化系统
  • [全网首发] Sora2Pro API 逆向接入指南:如何用 Python 实现 0.88元/次 的 4K 视频生成?(附源码)
  • 终极指南:Waifu2x-Extension-GUI智能超分辨率技术完全优化方案
  • 终极文档批量导出神器:3步搞定千份飞书文档自动整理
  • 终极教程:用LyricsX打造沉浸式桌面歌词体验,让音乐更动人心弦
  • 主流 AI 应用的“流式技术”的探索交流
  • Windows平台最强视频下载工具yt-dlp-gui:从入门到精通完全指南
  • ViGEmBus游戏控制器仿真驱动:轻松解决设备兼容性问题
  • B站Linux客户端深度体验:解锁跨平台追番新姿势
  • ExifToolGUI终极指南:免费高效的图片元数据管理工具
  • 解密Pyarmor加密脚本:静态分析工具的终极指南 [特殊字符]
  • RSSHub-Radar终极指南:快速掌握浏览器RSS订阅扩展的简单使用技巧
  • MoeKoe Music终极使用指南:解锁高颜值音乐播放器的完整潜力
  • 开源制造执行系统openMES:从零部署到生产监控完整指南
  • 生成式AI商业化浪潮下的伦理风险与治理之道
  • ros noetic使用pointcloud_to_laserscan 将2d激光雷达与深度摄像头数据融合
  • 第十三天~ARXML魔法学院:让CAN信号住进“Loft公寓”——数组信号深度解析
  • 25分钟完成700+飞书文档批量导出,这款神器让团队迁移效率提升20倍
  • Caused by:com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 > 连接到主机 localhost 的 TCP/IP 连接失败
  • 告别原生下拉框:Layui formSelects多选插件让表单交互更优雅
  • 百度网盘下载困境的破局之道
  • OpenCore Legacy Patcher终极指南:让老Mac重获新生
  • 基于PLC控制的称重式快递分拣系统设计
  • eSpeak NG文本转语音终极指南:从入门到精通
  • 企业级Windows日志监控平台搭建:Visual Syslog Server深度解析
  • UKB_RAP生物医学数据分析平台实战指南
  • 基于 PLC控制机械手臂取放料的系统设计
  • 5分钟解锁百度网盘极速下载:直链解析全流程实战