那一年, fork() 函数弄晕了多少Windows程序猿

来源:互联网 发布:deepin是linux吗 编辑:程序博客网 时间:2024/06/05 07:16

那一年, fork() 函数弄晕了多少Windows程序猿

 1567人阅读 评论(6) 收藏 举报
 分类:
 
 

        先来看linux下的一个简单C程序:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #include <stdio.h>  
  2. #include <unistd.h>  
  3.   
  4. int main()  
  5. {  
  6.     printf("a");  
  7.     pid_t fpid = fork();  
  8.   
  9.     return 0;  
  10. }  
      

      上面程序的结果是多少呢? 没接触过unix/linux编程的Windows程序猿肯定会说输出a啊, 其实, 这也真难为你了。 有一点unix/linux基础的程序猿很容易知道, 上面程序的结果为aa. 

      那一年, 某公司校园招聘的笔试题目中, 就考了fork, 还考了两个题目, 两个题目还很类似, 弄晕了不少经常在Windows下写程序但较少接触unix/linux的程序猿。 在下一篇博文中, 我们将一起学习这两个题目。 期待的心情, 总是那么迫切。




0
0






fork 时printf已经执行过,所以结果仍然只print一次

但把程序改一下,这才会print两个a。 
int main()
{
pid_t fpid = fork();
printf("a");
return 0;
}

没接触过unix/linux编程的Windows程序猿, 其实, 这也真难为你了

回复cjcandctr:回复cjcandctr:#include <stdio.h> 
#include <unistd.h> 

int main() 

printf("a"); 
pid_t fpid = fork(); 
return 0; 

printf的内容没有被立即打印出来,放在了缓冲中。fork的时候被子程序复制了一份,所以能打印出两个a。

没有unix/linux环境编程的Windows程序猿, 其实, 这也真难为你了


0 0
原创粉丝点击