深入剖析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/
深入剖析Linux I/O操作与标准I/O操作区别与联系的更多相关文章
- 剖析 Linux hypervisor--KVM 和 Lguest 简介
慢慢弄清楚.. M. Tim Jones, 顾问工程师, Emulex Corp. M. Tim Jones 是一名嵌入式软件工程师,他是 Artificial Intelligence: A S ...
- 剖析 Linux hypervisor
hypervisor 之于操作系统类似于操作系统之于进程.它们为执行提供独立的虚拟硬件平台,而虚拟硬件平台反过来又提供对底层机器的虚拟的完整访问.但并不是所有 hypervisor 都是一样的,这是件 ...
- Linux(C/C++)下的文件操作open、fopen与freopen
open是linux下的底层系统调用函数, fopen与freopen c/c++下的标准I/O库函数,带输入/输出缓冲. linxu下的fopen是open的封装函数,fopen最终还是要调用底层的 ...
- 深入剖析 linux GCC 4.4 的 STL string
转自: 深入剖析 linux GCC 4.4 的 STL string 本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Wri ...
- Linux(C/C++)下的文件操作open、fopen与freopen via Boblim
Linux(C/C++)下的文件操作open.fopen与freopen open是linux下的底层系统调用函数,fopen与freopen c/c++下的标准I/O库函数,带输入/输出缓冲. li ...
- 深入剖析Linux IO原理和几种零拷贝机制的实现
深入剖析Linux IO原理和几种零拷贝机制的实现 来源 https://zhuanlan.zhihu.com/p/83398714 零壹技术栈 公众号[零壹技术栈] 前言 零拷贝(Zero ...
- 关于linux中的目录配置标准以及文件基本信息
关于Linux中的目录配置标准 在查看docker.k8的运行日志,修改相关的运行记录的时候,学长总是能很快地找到目录,这个多多少少和Linux的FHS(File Hierarchy Standard ...
- 全方位剖析 Linux 操作系统,太全了!!!
Linux 简介 UNIX 是一个交互式系统,用于同时处理多进程和多用户同时在线.为什么要说 UNIX,那是因为 Linux 是由 UNIX 发展而来的,UNIX 是由程序员设计,它的主要服务对象也是 ...
- 十天学Linux内核之第四天---如何处理输入输出操作
原文:十天学Linux内核之第四天---如何处理输入输出操作 真的是悲喜交加呀,本来这个寒假早上8点都去练车,两个小时之后再来实验室陪伴Linux内核,但是今天教练说没名额考试了,好纠结,不过想想就可 ...
随机推荐
- 使用JavaScriptSerializer进行序列化日期类型应该注意的问题
原文:使用JavaScriptSerializer进行序列化日期类型应该注意的问题 JavaScriptSerializer在序列化DateTime时,是用刻度来表示的,具体在Json体现为:\/Da ...
- XAMPP on Mac 组态 Virual Host
首先,在hosts文件中添加virtual host域名.方向127.0.0.1 我一般使用的命名约定dev-domainname.com sudo nano /private/etc/hosts # ...
- JavaScript重载解读
在JavaScript有一个特殊的数据类型---Function种类,JavaScript每个功能Function的类型,例如可以.由于函数是对象.指针,不会与某个函数绑定. <pre name ...
- 递归与尾递归(C语言)
原文:递归与尾递归(C语言)[转] 作者:archimedes 出处:http://www.cnblogs.com/archimedes/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留 ...
- knob.js进度插件
关于knob.js进度插件的使用 关于这个插件,妹的,第一次使用坑死爹了,各种不会,幸亏我有持之以恒的精神,最终还是让其臣服于我的胯下.... 1. 引入 head 部分添加knob.js,同时引 ...
- leetcode[50] N-Queens
题目:给定一个n,那么在n*n的棋盘里面放国际象棋的皇后,皇后之间互不在攻击范围.(皇后的攻击范围是她所在位置的哪一行,那一列,和她的正负1的对角线) The n-queens puzzle is t ...
- 牛腩公布系统--HTTP 错误 403.14 - Forbidden
忘了是谁说的"至理名言",做牛腩公布系统,不怕出错误,就怕出跟牛老师不一样的错误!! 刚做就開始出现各种错误了,只是话说错误越多,收获越多.把每次困难都当做历练成长的机会.不多说, ...
- PHP:Cannot modify header information - headers already sent by错误的解决方案
<?php ob_start();setcookie("username","test",time()+3600);echo "the user ...
- Best jQuery Plugins of the Month – May 2014
1. jQuery referenceSection jQuery referenceSection by Scott Mascio ensures to help users in adding a ...
- Android开发方法学
这是Cyril Mottier最近更新的一篇文章,原谅地址在这里:Android开发方法学. 这篇文章是他介绍自己所在项目小组(Capitaine Train Android Team)设计.开发时的 ...