linux进程控制

一.进程创建

1.写时拷贝

通常父子进程使用的数据是一份的,但是如果哪个进程想要更改其中的某个数据时,则系统会将这个数据拷贝一份给这个进程

因为有写时拷贝的存在,父子进程才得以彻底分离!保证了进程的独立性!

2.fork函数

(1)功能:创建子进程

(2)使用场景:一个父进程希望复制自己,使父子进程同时执行不同的代码段

(3)调用失败原因:

a.系统中有太多进程,内存不足以再创建进程

b.系统可能会对用户创建进程数量有限制,用户创建的进程数超过限制也会创建失败

二.进程终止

1.进程退出场景

a.代码运行完毕,结果正确

b.代码运行完毕,结果错误

c.代码异常终止

针对前两种情况,通常通过进程返回的++错误码++来进行判断

2.进程常见退出方法

(1)main函数执行完成返回

退出码:由main函数return的数字就是退出码,不同的数字代表不同的退出状态,我们可以用退出码来判断程序是成功结束的还是以错误结束的

可以用echo $? 打印最近一个程序(进程)退出时的退出码

(2)调用exit函数

C语言的库函数,使用该函数退出进程时,会刷新缓存区

(3)调用_exit

系统调用接口,使用该函数退出进程时,不会刷新缓存区

exit()和_exit()的区别

三.进程等待(等待子进程退出)

1.进程等待的必要性

a.子进程退出,如果父进程不管不顾,就会造成子进程一直处于僵尸状态,造成内存泄露,即使是杀人不眨眼的kill -9 也无能为力,因为谁也没有办法杀死一个已经死去的进程

b.父进程派给子进程完成的任务完成的如何,我们需要知道,如:子进程运行完成,是不是正常退出的,完成的结果对还是不对

2.进程等待是什么?

父进程通过进程等待的方式,回收子进程资源(最重要的),获得子进程退出信息(可选获取不获取)

3.实际操作

(1)wait函数

(2)waitpid函数

4.实验代码

相关推荐
交换机路由器测试之路39 分钟前
什么是以太网
运维·网络·网络协议·路由器·以太网·交换机
小时候没少挨打39 分钟前
从0到1安装NVIDIA驱动(NVSwitch+Driver+IB网络驱动)
运维·服务器·数据库
SelectDB技术团队40 分钟前
云上数据安全新范式:Apache Doris IAM Assume Role 解锁无密钥访问 AWS S3 数据
服务器·前端·安全
九河云43 分钟前
新能源汽车充电桩数字化:充电效率 AI 调控与运维服务云管理平台实践
运维·人工智能·汽车
可可苏饼干1 小时前
Docker命令与知识点归纳
运维·学习·docker·容器
00后程序员张1 小时前
Fastlane 结合 开心上架,构建跨平台可发布的 iOS 自动化流水线实践
android·运维·ios·小程序·uni-app·自动化·iphone
YongCheng_Liang1 小时前
从零搭建 NFS 服务:文件共享部署与使用全指南
linux·运维·服务器
2501_921939261 小时前
11.27ECshop+Wordprees
运维·服务器
大聪明-PLUS1 小时前
C++中的复制语义和资源管理
linux·嵌入式·arm·smarc