首页 > 代码库 > 【Linux】fork
【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打印
【Linux】fork
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。