在Ubuntu14.04中的7.4.52里写程序,在学习fork()系统调用的时候,出了点问题。
由于我是在Makefile文件中写了个名为exec的目标,vim配置为一键执行make exec指令,编译当前程序并且运行。
我的测试代码如下。
-
#include <stdio.h>
-
#include <stdlib.h>
-
#include <unistd.h>
-
-
int main(int argc, char * argv[])
-
{
-
int i = 0;
-
for(i = 0; i < 3; i++)
-
{
-
if(fork() == 0)
-
{
-
puts("i am a child");
-
}
-
}
-
return EXIT_SUCCESS;
-
}
如果另开一个终端运行编译好的程序,输出是这样的,没有问题。
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
但是我在vim中运行时,就会诡异地变成这样。
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
-
i am a child
输出的数目完全不对,难道是因为vim内部也用了fork?先记录在这里,回头再查源码看能不能解决这个问题。
阅读(591) | 评论(0) | 转发(0) |