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.实验代码

相关推荐
一叶飘零_sweeeet10 分钟前
Docker Compose实战指南
运维·docker·容器
Bruce_Liuxiaowei26 分钟前
Windows防火墙规则导出工具:让安全配置可备份、可迁移、可审计
运维·windows·安全·网络安全
Wmenghu37 分钟前
Ubuntu手动安装jdk;Ubuntu手动安装Maven;Ubuntu手动安装RocketMQ;Ubuntu手动安装RocketMQ-Dashbo
java·linux·ubuntu
SPC的存折1 小时前
10、Docker容器故障排查
linux·运维·数据库·docker·容器
liuyunshengsir1 小时前
linux 下新增用户后无法使用TAB补全功能的最佳解决方法
linux·运维·服务器
书生执笔画浮沉2 小时前
rpmrebuild
linux·centos·rpm
志栋智能3 小时前
超自动化巡检:驱动运维团队从操作走向优化
运维·服务器·自动化
乌托邦的逃亡者3 小时前
Dockerfile的配置和使用
linux·运维·docker·容器
小此方3 小时前
Re:Linux系统篇(三)指令篇 · 二:十二个高频指令精讲+重定向操作+“一切皆文件“深入理解
linux·运维·服务器
十五年专注C++开发3 小时前
MobaXterm:Windows 远程工作全能工具箱
linux·windows·mobaxterm