首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

用fork()往文件里写数据有关问题

2012-03-15 
用fork()往文件里写数据问题有这样一个程序:#includestdio.hmain(){FILE*fpintpidcharmsg1[] Test12

用fork()往文件里写数据问题
有这样一个程序:
      #include   <stdio.h>  
      main()
      {
          FILE   *fp;
          int   pid;  
          char   msg1[]= "Test   1   2   3..\n ";
          char   msg2[]= "Hello,hello ";
          if((fp=fopen( "testfile ", "w "))==NULL)
                return   0;
          fprintf(fp, "%s ",msg1);
          if((pid=fork())==-1)
                return   0;
          fprintf(fp, "%s ",msg2);
          fclose(fp);
          return   1;
      }
      对文件testfile中的输出结果有点不理解,
      结果是:Test   1   2   3..
                      Hello,hello
                      Test   1   2   3..
                      Hello,hello
      ?

[解决办法]
fork成功后,子进程是父进程的一个完美的复制品,包括文件缓冲区,所以fprintf(fp, "%s ",msg1);只执行了一次,但是在fclose(fp);时两个进程的文件缓冲区都写到文件里了。
[解决办法]
fork之前调用:
setbuf(fp, 0);
就不会有问题了

热点排行