【Linux】fork
fork函数调用特点
一次调用,两个返回
为什么?
每个进程在各自的地址空间中返回---->站在Linux内核角度思考fork调用
fork是一个系统调用,在Linux内核中完成
fork返回值为什么设计成pid>0是父进程, =0是子进程?
一个父进程可以有N个子进程,父亲找儿子的pid比较难
fork理解角度:一次调用 两个分支同时运行 (并发)
fork子进程为什么从fork之后运行,不是从main函数从头开始?
这和fork创建子进程的机制有关,子进程创建的机制为写时复制
子进程要拷贝父进程的代码段、堆栈段、数据段、PCB进程控制块
PCB控制块是Linux内核管理进程的数据结构(task_struct)
因为子进程拷贝了父进程的运行场景,所以子进程没有必要再从main函数开始再运行一遍了
写时复制理解:
子进程修改变量的时候才拷贝
只拷贝页 ----->Linux内核的内存管理
系统错误码在全局变量errno里面
在程序中,perror可以把errno对应string打印
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。