设为首页 加入收藏

TOP

深入剖析Linux I/O操作与标准I/O操作区别与联系
2014-11-24 03:14:26 来源: 作者: 【 】 浏览:2
Tags:深入 剖析 Linux I/O 操作 标准 区别 联系

文件I/O:open creat close lseek read write dup dup2 sync fsync fcntl ioctl


所有函数都是针对文件描述符。


所有的都是原子操作,这个在多进程间共享文件时就显得尤为重要。


int open(const char *pathname,int flag,... /* mode_t mode*/) ;


Samples: open(pathname,O_RDWR | O_CREAT | O_TRUNC, mode);


int creat(const char *pathname,mode_t mode);


int close(int filedes);


off_t lseek(int filedes, off_t offset, int whence);


ssize_t read(int filedes, void *buf, size_t nbytes);


ssize_t write(int filedes, const void *buf, size_t nbytes);


标准I/O:FILE,


标准库都是围绕流进行的,(教训:fflush就是一种通过刷新缓冲让缓冲中的数据被读或者写)。


我现在凭记忆可以罗列的就只有:FILE结构体, fopen,fread,fwrite,fclose,fgetc,fputc,fgets,fputs,fflush.


标准IO分为全缓冲,行缓冲,不带缓冲。


全缓冲:填满缓冲后才执行IO操作。


行缓冲:输入或输出中遇到换行符时,标准库执行IO操作。


对于行缓冲有两个限制1)行的长度是有限制的,如果一行满了,即使没有换行符也会执行IO操作。


2)任何时候,从一个不带缓冲的流,或者一个行缓冲流得到输入数据,就会造成冲洗所有缓冲流。【此处,或者很误解】。


不带缓冲:字符输入输出。通常标准出错流stderr也是不带缓冲的。


高级I/O:


关于高级I/O,有太多的内容,非阻塞I/O,记录锁,STREAMS,I/O多路转换(select,pselect, poll ,epoll),异步I/O(System V ,BSD),readv,writev,readn,writen.存储映射I/O等。这些是Unix系统高级编程2里介绍的。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux内核基础--事件通知链(notif.. 下一篇Linux中1号进程的创建剖析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·请问微信4.0版本xwec (2025-12-24 22:48:42)
·电脑NVIDIA的文件夹 (2025-12-24 22:48:40)
·如何看待微信新版本 (2025-12-24 22:48:37)
·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)