子进程与父进程之间除了代码是共享的之外,堆栈数据和全局数据均是独立的。
void main()
{
pid_t pid;
/*
fork函数被调用一次但返回两次。
为什么fork会返回两次?由于子进程在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,
等待返回,这样就会有两个返回值。
*/
if (-1 == (pid == fork()))
{
printf("Error happened in fork function!\n");
return;
}
if (0 == pid)
{
printf("This is child process:%d\n", getpid());
Sleep(5);
}
else
{
//让父进程等待子进程运行结束后才开始运行
wait(NULL);
printf("This is parent process:%d\n", getpid());
}
return;
}
3879

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



