阅读深入理解计算机系统(四)--------------- 系统级I/O

本文介绍了Unix系统中文件I/O的基本操作,包括打开文件、读写文件等,并详细解释了open、close、read、write及dup2等系统调用的功能与使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        一个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的文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值