经典指数          
原因
2815
浏览数
0
收藏数
 

请问下面的程序一共输出多少个“-”?
int main(void)
{
    int i;
    for (i = 0; i < 2; i++) { 
        fork(); 
        printf("-"); 
    } 
    return 0; 
} 

  • 2
  • 4
  • 6
  • 8

     举报   纠错  
 
切换
1 个答案

fork()系统调用的特性,

fork()系统调用是Unix下以自身进程创建子进程的系统调用,一次调用,两次返回,如果返回是0,则是子进程,如果返回值>0,则是父进程(返回值是子进程的pid),这是众为周知的。

还有一个很重要的东西是,在fork()的调用处,整个父进程空间会原模原样地复制到子进程中,包括指令,变量值,程序调用栈,环境变量,缓冲区,等等。

可以参考陈皓对这道题的解析:

http://coolshell.cn/articles/7965.html

 
切换
撰写答案