我正在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系统调用之前打印'新'。 为什么会发生这种事?在读取系统调用的“printf”之后使用Write System调用。
答案 0 :(得分:4)
这是因为输出被缓冲,直到你写出换行符。
答案 1 :(得分:1)
更新此行将起作用
printf("I am Reading file %s \n",buff);
答案 2 :(得分:1)
你忘了添加&#34; \ n&#34;在写入系统调用之前的printf中。
rd = read(id,buff,8);
printf("I am Reading file %s\n",buff);
write(1,"New\n",4);