【发布时间】:2014-04-08 05:12:01
【问题描述】:
我正在用 LINUX 编写这个程序
#include <fcntl.h>
int main()
{
int rd,id;
char buff[10]={0};
id = open("p_child.c",O_RDONLY|O_APPEND|O_WRONLY);
if(id>1)
{
printf("I am file descriptor %d \n",id);
rd = read(id,buff,8);
printf("I am Reading file %s",buff);
write(1,"New\n",4);
printf("\nI am Writing file %s \n",buff);
}
}
它的输出就像在 READ 系统调用之前打印 'New'。 为什么会这样??因为写系统调用是在读系统调用的“printf”之后使用的。
【问题讨论】:
-
printf缓冲其输出。尝试在第二次printf调用之后添加fflush(stdout);。 -
or, printf("我正在读取文件 %s\n",buff);
-
您对
open()使用了非法的flags参数。您不能使用O_RDONLY | O_WRONLY代替O_RDWR。阅读手册页。
标签: c