摘要: 标准io库处理了很多细节,比如缓冲区的分配,以优化执行io在之前的文件io中,所有的操作都是围绕文件描述符展开的,而对于标准io库,他们的操作则是围绕着流展开的,当用一个标准io库打开或者创建一个文件时,我们已经使一个流与一个文件相关联。缓冲提供缓冲的目的是尽可能减少使用read和write的调用次数。1.全缓冲:填满缓冲区后才进行实际io操作2.行缓冲:当输入或者输出遇到换行符时执行io操作3.不带缓冲:使出错信息可以尽快显示出来一般的来说,出错信息是不带缓冲的,涉及到终端设备的其他流,是行缓冲的,其他情况下都是全缓冲的。对于任何一个流,在打开该流的情况下,可以对流的类型进行改变,setbu 阅读全文
posted @ 2012-09-14 18:40 w0w0 阅读(248) 评论(0) 推荐(0) 编辑
摘要: state fstate lstate函数#include<sys/stat.h>int stat(const char* restrict pathname, stuct state *restrict buf);返回与此命名文件有关的int fstat(int fieldes, struct state *buf);返回描述符上打开文件的信息int lstat(const char *restrict pathname, struct state *restrict buf);和state类似,但是当文件时个符号链接时,返回该符号链接的有关信息struct stat是一个结构体 阅读全文
posted @ 2012-09-14 15:48 w0w0 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 不带缓冲的io,绝大多数文件io都只需要用到5个函数open read write lseek close文件描述符是一个非负整数,当打开或者创建一个文件时,内核向进程返回一个文件描述符,使用open或者create返回的文件描述符标识该文件。按照惯例,标识0,1,2和标准输入输出和标准错误相关联。open函数#include<fcntl.h>open(char* pathname, int oflag, [mode_t mode]);O_RDONLY O_WRONLY O_RDWR 三种读写方式必选一种可选的比较重要的标识O_APPEND 每次读写都追加到文件的O_CREAT 若 阅读全文
posted @ 2012-09-14 13:54 w0w0 阅读(194) 评论(0) 推荐(0) 编辑