是从学堂在线看的另外一位清华老师讲的
unix是用fork/exec 这两个系统调用来完成新进程的创建,
fork完成把一个进程复制成两个进程,这时候他们所执行的程序是一样的,但是这里面,它的变量有一个地方是不一样的,就是进程的ID,也就是pid,parent进程是原来的pid,child是分配给一个新的pid,
完成这个复制之后,接下来,由exec加载一个新的程序到内存中重写当前进程,也就是当前创建的子进程,这时候pid没有改变,等着系统调用返回,我们已经变成了两个进程,并且第二个进程已经变成一个新的程序在运行了,那这是新进程创建的基本做法。
fork完之后,当前系统就有两个进程,并且这两个进程的当前指令都指向fork完之后的那一行,父进程和子进程执行fork的返回值不一样,子进程返回0,父进程中返回值是子进程pid。


有一些特殊寄存器会不一样,以便我们区别父进程和子进程ID的不一致,



在操作系统里面的变化如下:



从代码的角度,如下:




被折叠的 条评论
为什么被折叠?



