分类:
版权声明:本文为博主原创文章,未经博主允许不得转载。
先来看linux下的一个简单C程序:
- #include <stdio.h>
- #include <unistd.h>
- int main()
- {
- printf("a");
- pid_t fpid = fork();
- return 0;
- }
上面程序的结果是多少呢? 没接触过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程序猿, 其实, 这也真难为你了
但把程序改一下,这才会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程序猿, 其实, 这也真难为你了
#include <unistd.h>
int main()
{
printf("a");
pid_t fpid = fork();
return 0;
}
printf的内容没有被立即打印出来,放在了缓冲中。fork的时候被子程序复制了一份,所以能打印出两个a。
没有unix/linux环境编程的Windows程序猿, 其实, 这也真难为你了