一.前置知识——pid和ppid1.系统调用接口查看pid,ppidpid:当前进程ppid:父进程每次启动的进程,系统会重新生成pid,系统只保证当前生命周期内pid有效;但是父进程不会变 

2.为什么ppid父进程id不变?——bash命令行解释器与bash进程当我们运行一个进程时,命令行解释器会将这个指令解释为bash的子进程,然后再由这个bash的子进程执行相应的命令当这个子进程出现问题时,并不影响bash的进程即:每一条命令被执行,都属于bash的子进程我们执行一段代码,parent对应的是getppid()函数;
我们接着用ps+grep过滤指令查看这个16815进程,发现其就是bash进程
二.fork( )函数原理与应用详解1.fork()函数基本介绍fork(): 创建子进程
返回值给 【父进程返回子进程PID,给子进程返回0】
2.fork()返回值有两个:——>变成了两个进程(父子进程)——>实现两个死循环同时运行我们观察发现,他们不但生成了两个进程,而且还是父子进程关系
由此我们得到了进程之间的 关系图
3.为什么fork要有两个返回值?返回不同的返回值,是为了 区分 以便在fork后的if判断、while等语句中,让父子进程执行 不同的代码片段4.为什么fork要给子进程返回0,给父进程返回子进程pid?父进程需要标记子进程,确保其 唯一性 5.fork函数究竟在干什么?————>父子进程共享代码段,各自拥有数据段(写时拷贝)进程=内核数据结构+代码和数据 多了一个子进程,说明内存中一定会多出一个PCB供操作系统调度fork出来的子进程,和父进程 共享同一个代码 任何平台,进程在运行的时候,是具有 独立性 的因为数据 可能被修改 (一开始除外), 所以需要访问子进程的数据时 ,不能让他们共享数据;代码 不可以被修改 ,所以可以共享子进程需要访问数据时,单独开空间用多少,拷贝多少,进行了写时拷贝 
父子进程共享代码段现象:fork以后的代码执行了两次先不调用fork函数,观察这段代码执行结果代码正常执行一次
调用fork()以后:我们发现fork以后的代码 执行了两次 
6.一个函数是如何做到返回两次的?——>父子进程共享return代码段fork是一个函数, return语句 也属于 代码片段 从5小点我们知道 父子进程共享代码段 ,于是有了以下过程 
以上就是【Linux系列】fork( )函数原理与应用详解——了解【父子进程及其特性】(代码演示,画图帮助理解,思维导图,精简)(11)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号