深入剖析Linux I/O操作与标准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里介绍的。




http://blog.csdn.net/yunsongice


linux multimedia

http://tech.ccidnet.com/art/302/20060927/911605_7.html

http://gstreamer.freedesktop.org/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钱国正

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值