加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

深入剖析Linux I/O操作与标准I/O操作差异与联系

发布时间:2021-12-13 12:37:18 所属栏目:PHP教程 来源:互联网
导读:文件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
文件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里介绍的。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读