一、首先看一个程序:
#include <stdio.h>
#include <sys/wait.h>
#include <unistd.h>
Int main()
{
Int i = 0;
For(i = 0 ; i < 2 ; i++)
{
Fork();
Printf(“-”);
}
Wait(NULL);
Wait(NULL);
Return 0;
}
上面这个程序一共输出多少个“-”?
相信对fork()函数有所了解的,可能会说出是6个,但是结果真的是这样的吗?其实不然,正确的输出是8个。为什么会是这样呢?下面我们就来揭晓:
其实很简单,不知道有人注意没,上面的程序的printf语句中没有换行。首先,我们都知道,fork时,子进程会复制父进程的进程空间,包括指令,变量值,程序调用栈,环境变量,缓冲