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

Linux--进程创建

进程创建

 

写时拷贝(时间换空间)

  1. 更新页表项权限为只读----子进程写入----触发系统错误
  2. 系统缺页中断,系统开始检测,系统判断写入区域是数据区还是代码区,如果是代码区就终结进程,如果是数据区就进行写时拷贝。
  3. 写时拷贝:申请内存,发生拷贝,修改页表,恢复执行,恢复权限

为什么要拷贝而不是更改?写入操作 != 对目标区域进行覆写操作,比如 count++

 

 

进程终止

mian函数的返回值,是给父进程和系统的

echo $?查看进程错误码

退出码通常表明错误原因

0:成功

非零:错误

退出码表

 

进程终止的方法

1main 函数 return

2 exit 在代码的任何地方,表示进程结束

3 _exit 

exit和_exit的区别

1 刷新缓冲区的问题

exit 属于3号手册 库函数

_exit属于2号手册 系统调用

2 上下层关系

缓冲区,语言级缓冲区 ----C/C++提供的

_exit 直接终止,所以不会刷新

 

进程等待

 

一般而言,父进程创建子进程,父进程就要等待子进程,知道子进程结束,等待的时候,子进程不退出,父进程就要阻塞在wait函数内部

1.回收子进程的僵尸状态

waitpid 

等待子进程的pid   进程退出码(32个比特位)

 

 

 

 

 


http://www.kler.cn/a/593666.html

相关文章:

  • Android 13深度定制:SystemUI状态栏时间居中显示终极实战指南
  • The Illustrated Stable Diffusion
  • 电机控制常见面试问题(十四)
  • pytorch v1.4.0安装问题
  • 2024年国赛高教杯数学建模E题交通流量管控解题全过程文档及程序
  • 嵌入式系统开发如何选择和备考软考高级
  • webpack等构建工具如何支持移除未使用的代码
  • 基于carla的模仿学习(附数据集CORL2017)更新中........
  • WPF 中的 GridSplitter 详解
  • 不使用负压电源,ADC如何测量正负压?
  • 为什么渲染农场渲染帧而非视频?核心原因 + 举例
  • Neo4j GDS-02-graph-data-science 简单聊一聊图数据科学插件库
  • 计算机网络基础:设计高效的网络布局
  • 使用cartographer扩展地图
  • 【Linux】VMware 17 安装 VMware Tools
  • 网络运维学习笔记(DeepSeek优化版) 019 HCIA-Datacom新增知识点01网络管理与运维
  • docker 创建mysql5.7 并开启bin_log和general_log日志审计功能
  • docker 内 pytorch cuda 不可用
  • 【JavaEE】传递和接收数据,Spring MVC 注解搭建前后端交互的「隐形桥梁」
  • Android Compose 框架图片加载深入剖析(六)