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;
}