写系统调用

时间:2014-04-08 05:12:01

标签: c

我正在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调用。

3 个答案:

答案 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);