关于fork的疑问

killme2008 2008-02-21 05:02:55
一段很简单的程序:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main()
{
FILE *fp;
int pid;
char msg1[]="Test 1 2 3...";
char msg2[]="Hello,hello";

if((fp=fopen("testfile2","w"))==NULL)
return 0;
fprintf(fp,"%s %d \n",msg1,getpid());

if((pid=fork())==-1)
return 0;

fprintf(fp,"%s %d \n",msg2,getpid());
fclose(fp);
return 1;
}

执行查看testfile2类似下面的结果:

Test 1 2 3... 2565
Hello,hello 2566
Test 1 2 3... 2565
Hello,hello 2565

不明白为什么父进程会输出msg1两次??如果使用unix io替代标准io,结果很好理解,输出两次msg2和一次msg1。
...全文
80 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,114

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧