fork函数

来源:互联网 发布:sqlserver 2005下载 编辑:程序博客网 时间:2024/05/09 03:01

fork()系统调用是Unix下以自身进程创建子进程的系统调用,一次调用,两次返回,如果返回是0,则是子进程,如果返回值>0,则是父进程(返回值是子进程的pid)。
还有一个很重要的东西是,在fork()的调用处,整个父进程空间会原模原样地复制到子进程中,包括指令,变量值,程序调用栈,环境变量,缓冲区,等等。

微笑

//run in linux  程序会输出多少个'-'?int main(void){int i;for(i = 0; i < 2; i++){ fork(); printf("-");}  return 0;}

答:如果你对fork()的机制比较熟悉的话,这个题并不难,输出应该是6个“-”,但是,实际上这个程序会很tricky地输出8个“-”。

printf(“-”);把“-”放到了缓存中,并没有真正的输出,在fork的时候,缓存被复制到了子进程空间,所以,就多了两个,就成了8个,而不是6个。

那么我们把上面的程序改成下面这样:



0 0
原创粉丝点击