阅读深入理解计算机系统(四)--------------- 系统级I/O
2014-12-22 16:36
309 查看
一个Unix文件就是一个m个字节的序列,所有的I/O设备,如网络、磁盘和终端,都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。
a. 打开文件,一个应用程序通过内核要求打开相应的文件,来宣告它要访问一个I/O设备,内核返回一个小的非负整数,叫做描述符,应用程序后续对这个文件的操作都是通过这个描述符。
int open(char*filename,int flags,mode_t mode);
返回:若成功则为新文件描述符,若出错则为-1;
open函数将filename转换为一个文件描述符,返回的描述符总是进程中当前没有打开的最小描述符。
flags参数致命了进程打算如何访问这个文件,O_RNONLY、O_WRONLY、O_RDWR。
mode参数指定了新文件的访问权限位,给文件拥有者和其他用户设定权限。
close函数
int close(int fd);
返回:成功则为0,若出错则为-1;
关闭一个已关闭的描述符会出错。
b. 读和写文件
ssize_t read(int fd,void *buf,size_t n);
ssize_t write(int fd,const void *buf,size_t n);
返回:若成功则为写或者读的字节数,若出错则为-1;
c. I/O重定向:dup2(oldfd,newfd);
dup2函数拷贝描述符表表项oldfd到描述符表表项newfd,例如:dup2(4,1)将会把输出到标准输出的所有数据都输出到描述符为4的文件中。
a. 打开文件,一个应用程序通过内核要求打开相应的文件,来宣告它要访问一个I/O设备,内核返回一个小的非负整数,叫做描述符,应用程序后续对这个文件的操作都是通过这个描述符。
int open(char*filename,int flags,mode_t mode);
返回:若成功则为新文件描述符,若出错则为-1;
open函数将filename转换为一个文件描述符,返回的描述符总是进程中当前没有打开的最小描述符。
flags参数致命了进程打算如何访问这个文件,O_RNONLY、O_WRONLY、O_RDWR。
mode参数指定了新文件的访问权限位,给文件拥有者和其他用户设定权限。
close函数
int close(int fd);
返回:成功则为0,若出错则为-1;
关闭一个已关闭的描述符会出错。
b. 读和写文件
ssize_t read(int fd,void *buf,size_t n);
ssize_t write(int fd,const void *buf,size_t n);
返回:若成功则为写或者读的字节数,若出错则为-1;
c. I/O重定向:dup2(oldfd,newfd);
dup2函数拷贝描述符表表项oldfd到描述符表表项newfd,例如:dup2(4,1)将会把输出到标准输出的所有数据都输出到描述符为4的文件中。
相关文章推荐
- 如何阅读深入理解计算机系统
- 如何阅读深入理解计算机系统
- 如何阅读深入理解计算机系统
- 如何阅读深入理解计算机系统
- [阅读笔记]深入理解计算机系统
- 深入理解计算机系统阅读1
- 深入理解计算机系统阅读笔记-优化程序性能
- 如何阅读深入理解计算机系统
- 如何阅读深入理解计算机系统
- 如何阅读深入理解计算机系统
- 如何阅读深入理解计算机系统
- 深入理解计算机系统(Computer Systems: A Programmer's Perspective)阅读体会
- 如何阅读深入理解计算机系统
- 如何阅读深入理解计算机系统
- 开始阅读 深入理解计算机系统
- 如何阅读深入理解计算机系统
- 阅读深入理解计算机系统(二)--------------- 进程控制
- 阅读深入理解计算机系统(三)--------------- 虚拟存储器
- 如何阅读深入理解计算机系统
- 如何阅读深入理解计算机系统