Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49831
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 72
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-04 12:39
文章分类
文章存档

2016年(1)

2015年(1)

2014年(5)

我的朋友

分类: LINUX

2016-01-28 16:27:08

在Ubuntu14.04中的7.4.52里写程序,在学习fork()系统调用的时候,出了点问题。
由于我是在Makefile文件中写了个名为exec的目标,vim配置为一键执行make exec指令,编译当前程序并且运行。
我的测试代码如下。

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>

  4. int main(int argc, char * argv[])
  5. {
  6.     int i = 0;
  7.     for(i = 0; i < 3; i++)
  8.     {
  9.         if(fork() == 0)
  10.         {
  11.             puts("i am a child");
  12.         }
  13.     }
  14.     return EXIT_SUCCESS;
  15. }
如果另开一个终端运行编译好的程序,输出是这样的,没有问题。

点击(此处)折叠或打开

  1. i am a child
  2. i am a child
  3. i am a child
  4. i am a child
  5. i am a child
  6. i am a child
  7. i am a child
但是我在vim中运行时,就会诡异地变成这样。

点击(此处)折叠或打开

  1. i am a child
  2. i am a child
  3. i am a child
  4. i am a child
  5. i am a child
  6. i am a child
  7. i am a child
  8. i am a child
  9. i am a child
  10. i am a child
  11. i am a child
  12. i am a child
输出的数目完全不对,难道是因为vim内部也用了fork?先记录在这里,回头再查源码看能不能解决这个问题。
阅读(591) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~