linux IO编程基本知识

一、标准C的I/O和

FILE结构体

typedef struct iobuf{
int cnt; /*剩余的字节数*/
char *ptr; /*下一个字符的位置*/
char *base; /*缓冲区的位置*/
int flag; /*文件访问模式*/
int fd; /*文件描述符*/
}FILE;

便准c的IO都是有缓存的,先把要操作的内容放到缓存中,最后在进行io的操作,譬如把某个字串读取到变量中,或者写数据到文件,可以查看 http://jinblog.com/archives/810.html 这篇文章的详细介绍

标准C的IO缓存类型

1、全缓存

要求填满整个缓存区后才进行I/O 系统调用操作。对于磁盘文件通常使用全缓存访问。

2、 行缓存

1)涉及一个终端时(例如标准输入和标准输出),使用行缓存。
2)行缓存满自动输出
3)碰到换行符自动输出

3、 无缓存

标准错误流stderr 通常是不带缓存区的,这使得错误信息能够尽快地显示出来。

下面的例子简单说明

#include <stdio.h>

int main()
{
        // 如下,执行程序是看不到输出内容的
        printf("Hello world!!!");
        // 加入 \n 是能看到内容的,因为标准输出是行级缓存的
        // printf("Hello world!!!\n");
        // 也可以使用fflush函数刷新输出缓冲,也能看到输出内容
        //fflush(stdout);
        while(1)
        {   
                sleep(1);
        }   
        return 0;
}

标签: linux, c

添加新评论