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

相关推荐
夜月yeyue2 分钟前
STM32 DMA 双缓冲采样
linux·stm32·单片机·嵌入式硬件·系统架构
ScilogyHunter3 分钟前
Buildroot完全指南:从入门到实战
linux·嵌入式·buildroot
毕竟是shy哥11 分钟前
Claude Code 接入 DeepSeek 保姆级教程,WSL/Linux 通用
linux·安装教程·codex·deepseek·claude code·openclaw
AOwhisky20 分钟前
学习自测与解析:MySQL第五、六、七期核心知识点详解
运维·数据库·笔记·学习·mysql·云计算
无限进步_23 分钟前
从零实现一个迷你Shell——深入理解Linux命令行解释器
linux·运维·服务器·开发语言·c++·chrome
阿标在干嘛30 分钟前
政策平台的推送系统:消息队列、定时任务、AB测试的工程实践
服务器·数据库·ab测试
Adorable老犀牛1 小时前
nginx_exporter:Prometheus 监控 Nginx 基础指标
运维·nginx·prometheus
山里幽默的程序员1 小时前
DevOps 必备:盘点2026 年最强RESTful API 接口测试方案
运维·restful·devops·api开发·api开发工具
happymaker06261 小时前
Linux常见命令总结
linux·运维·服务器
加农炮手Jinx1 小时前
Flutter for OpenHarmony:pub_updater 命令行工具自动更新专家(DevOps 运维必备) 深度解析与鸿蒙适配指南
android·运维·网络·flutter·华为·harmonyos·devops