不仅进入系统调用时要伪装现场,fork系统调用时返回时也需要伪装现场。因为是“无中生有”。
例如在fork创建新进程时,系统要保证新进程与旧进程一样,从相同的代码开始执行。比如:
pid_t pid;
80483f0: &
例如在fork创建新进程时,系统要保证新进程与旧进程一样,从相同的代码开始执行。比如:
#include<stdio.h>
#include<unistd.h>
int main()
{pid_t pid;
if((pid=fork())>0)
{
printf("parent\n");
}
else if(pid==0)
{
printf("child\n");
}
else
printf("error\n");
return 0;
}
在fork()处,也就是执行call指令的过程中,产生了一个新进程。80483f0: &