一 0/1/2文件描述符:
文件描述符 0 stdin 1 stdout 2 stderr
写成相应的宏要加头文件 unistd.h
read 为行缓冲 读到 \n 自动换行
改缓冲方式可使得行缓冲变无缓冲
缓冲分类
行缓冲
无缓冲
有缓冲
改无缓冲方法
二 库函数和系统函数对比
功能性 c库 要 由于 系统
库函数的读写效率要由于系统调用
因为c库函数是有缓冲方式访问 减少从用户空间进入内核的次数
所以对文件做大量读写操作是用库函数比较好
三 提高文件读写效率方法
增大缓冲区 可以减小开销 减少访问内核的次数 缺点是可能大小不匹配时浪费空间
另一种方法是存储映射
操作方法
ftruncate:设置文件的大小 ftruncate(fd,strlen(buffer));
防止文件大小为零时出现段错误的情况
文件描述符操作:
系统调用打开的是文件描述符
库函数打开的是文件指针
int fileno(FILE *fp);
把文件指针转成文件描述符
FILE * fdopen(int fd,const char * mode)把文件描述符转成文件指针