linux的fork()和exec()

fork 会基于现有的进程复制一个子进程出来,该子进程代码空间和数据空间都指向父进程的物理空间。只要两个进程的任一个对数据进行修改,此时会产生一个系统中断,中断处理函数对该数据所在内存单元进行拷贝副本到子进程,然后再进行后续操作。即为写时复制。

fork 函数后只会对子进程的数据物理内存地址做修改,但是不会对代码物理内存地址做修改。而exec 函数则是要修改子进程的代码物理内存地址(从指定内存或者磁盘加载可执行文件或者脚本),其实就是相当于要执行新的程序了,从它的名字也可以看出来。

linux 所有进程的祖先都是 init 进程,其过程都是 fork + exec。

参考阅读


   转载规则


《linux的fork()和exec()》 阿钟 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录