Linux文件I/O


待我6.19中期答辩完再来更新......


参考文章:

[1] 《嵌入式Linux开发教程(上册)》

[2] Linux文件IO操作函数概述

[3] 详解linux文件IO


Linux下的输入/输出(I/O),设计成“一切皆文件”,把各种各样的输出/出入(I/O)当成文件来操作,统一用文件I/O函数的形式提供给应用程序调用。

1、Linux文件I/O概述

Linux文件按其代表的具体对象,可分类为:

  • 普通文件,即一般意义上的文件、磁盘文件;
  • 设备文件,代表的是系统中一个具体的设备;
  • 管道文件、FIFO文件,一种特殊文件,常用于进程间通信;
  • 套接字(socket)文件,主要用在网络通信方面。

文件I/O常用操作方法有“打开”、“关闭”、“读”和“写”等。只要是文件,都可以用这套方法操作。

系统提供了文件I/O的应用程序接口(API),以函数的形式提供给应用程序调用。打开文件对应的函数是open(),读文件对应的函数是read(),写文件对应的函数是write(),关闭文件对应的函数是close()。

2、文件描述符

文件描述符fd(file descriptor)是进程中代表某个文件的整数,又称为文件句柄(file handle)。

文件描述符的作用:类似于生活中排队取的号牌,业务员(进程)通过叫号(引用文件描述符)就能找到办事的人(打开的文件)。

有效的文件描述符取值范围从0开始,直到系统的某个界限值。这些指定范围的整数,实际上是进程文件描述符的索引。文件描述表是进程用来保存他所打开文件信息的、有操作系统维护的一个登记表,用户不能直接访问这个登记表。文件描述符的取值范围反映了文件描述符标的大小,表示这个进程最多可以同时打开多少个文件。

在Linux中,可以使用ulimit -n查询到这个数值的大小。

对于内核而言,进程锁打开的文件都有文件描述符引用。当进程打开一个文件或者创建一个新文件时,内核返回一个文件描述符给进程。

通常情况下,文件描述符0、1、2在进程启动时已被占用,代表进程在启动过程中打开的文件。通常文件描述符0、1、2在桌面系统与嵌入式系统上代表的文件如下:

文件描述符含义桌面/服务器Linux嵌入式Linux
0标准输入(stdin)键盘串口终端
1标准输出(stdout )

终端屏幕

串口终端
2标准错误(stderr)终端屏幕串口终端

3、常用文件I/O操作和函数

3.1 open

进行文件I/O操作时,要先打开对应的文件,可以调用open()函数,它返回的文件描述符fd代表打开的文件,后续操作通过引用该文件描述符fd来表示对这个文件的操作。open()函数原型在<fcntl.h>文件中定义:

int open(const char *pathname, int flags, ... /* mode_t mdoe */)
参数打开文件标志含义
pathnameC字符串形式的文件名
   
   
   
   
   

 

3.2 close

 

3.3 read

 

3.4 write

 

3.5 fsync

 

3.6 文件操作范例

 

 

3.7 lseek

 

3.8 ioctl

 

 

4、I/O操作和蜂鸣器

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值