- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1文件操作简介 3
1.1概念 3
1.2操作 3
2 文件访问-系统调用 4
2.1 文件描述符 4
2.2 write系统调用 4
2.3read系统调用 5
2.4open系统调用 6
2.5close系统调用 8
2.6ioctl系统调用 8
?3标准IO库 9
3.1 fopen函数 10
4.2 fread/fwrite函数 10
4.3 fclose函数 11
4.4 fflush函数 11
1文件操作简介
在Linux中,一切文件简单的说,C中基本的的printf()函数,scanf()函数,其实都属于文件操作。
对于文件操作,虽然都是通过函数调用的方式实现,却还是能分为两类:系统调用和库函数。
按照普通的定义,文件不过是一堆数据,在往下说,就是存储器中的0101。。。而我们这里讨论的文件有了更广的定义。对于Linux中的文件,我的理解是:
Linux中的文件具有的特点是:可通过操作系统或者程序对外提供信息,也能对内输入信息,可以被创建,删除。
Linux中,文件有特别重要的意义,他们为操作系统和设备提供了一个简单而统一的接口。在Linux中,几乎一切都可以看做是文件 。
这就意味着,普通程序完全可以像使用文件(普通定义)那样使用磁盘文件、串行口、打印机和其他设备。
硬件设备在linux操作系统中也被表示为文件。例如,可以通过如下命令把cd-rom驱动器挂载为一个文件,
#mount -t iso9660 /dev/hdc /mnt/cdrom
#cd /mnt/rom
然后,就能像访问普通文件那样在cd-rom目录中漫游。
和操作一般意义上的文件一样,linux中对文件的操作只需要五个基本的函数:
open、close、read、write和ioctl
通过调用这几个函数就能对linux中的文件进行读、写等操作。不过,这种操作又分为系统调用和库函数调用。简单的说,系统调用是最直接的方式,
库函数调用最终也是通过系统调用实现的。可认为库函数调用是对系统调出于效率考虑而做出的优化。
库函数调用和系统调用的区别和联系请参看:linux系统调用和库函数调用的区别
我们用很少的函数就可以对文件和设备进行访问和控制。这些函数就是所谓的系统调用,由操作系统直接提供,他们是通向操作系统本身的接口。
操作系统的核心部分,既内核,其实就是一组设备驱动程序。这是一些对硬件进行控制的接口。
通过系统调用来访问文件是最直接的方式。系统调用函数直接作用于操作系统内核的设备驱动程序从而实现文件访问。
在系统中需要处理的文件(读、写操作)需要一个标识,以便在其它地方能识别出这个文件,于是就产生了文件描述符。文件描述符是一些小值整数,简单的说就是
一个文件ID用于在系统中唯一的标识文件。文件描述符的总数也就是系统可以打开文件的最多个数,这取决于系统的配置情况。
当开始运行程序时,也就是系统开始运行时,它一般会有三个已经打开的文件描述符。他们是:
0:标准输入
1:标准输出
2:标准错误
其它文件的文件描述符,在调用文件打开函数open时返回。这就是说,每个设备对应着一个文件描述符。文件描述符由操作系统分配,每次分配最小的。
write,就是把缓冲区的数据写入文件中。注意,这里的文件时广泛意义的文件,比如写入磁盘、写入打印机等等。
Linux 中write()的函数原型:
size_t write(int fildes, const void *buf, size_t nbytes);
参数说明:
fildes:文件描述符,标识了要写入的目标文件。例如:fildes的值为1,就像标准输出写数据,也就是在显示屏上显示数据;如果为 2 ,则想标注错误写数据。
*buf:待写入的文件,是一个字符串指针。
nbytes:要写入的字符数。
函数返回值:size_t ?返回成功写入文件的字符数。需要指出的是,write可能会报告说他写入的字节比你所要求的少。这并不一定是个错误。在程序中,你需要检查
error已发现错误,然后再次调用write写入剩余的数据。
请看下面的例子:
运行结果:
这个程序只在标准输出上显示一条消息。
系统调用read是从文件中读出数据。要读取的文件用文件描述符标识,数据读入一个事先定义好的缓冲区。他返回实际读入的字节数。
Linux中read的函数原型:
size_t read(int fildes, void *buf, size_t nbytes);
参数说明:
fildes:文件描述符,标识要读取的文件。如果为0,则从标准输入读数据。类似于scanf()的功能。
*buf:缓冲区,用来存储读入的数据。
nbytes:要读取的字符数。
返回值:size_t返回成功读取的字符数,它可能会小于请求的字节数。
您可能关注的文档
- KPI绩效考核制度精选.doc
- 随机变量的数学期望分解.ppt
- 隧道爆破设计方案分解.doc
- 隧道爆破施工分解.ppt
- 隧道定期养护记录表(1-14定稿)分解.doc
- 隧道防排水施工作业指导书分解.doc
- 隧道工程复习分解.doc
- KUKA_机器人培训教材精选.ppt
- KYN28A-4000技术条件精选.doc
- 隧道工程质量检测分解.ppt
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
最近下载
- DPtech FW1000系列应用防火墙典型配置v3.2.pdf
- 部编人教版小学四年级语文上册《一只窝囊的大老虎》教案.pdf
- 2024年新高考英语总复习考点12 分词(上海专用原卷版).docx VIP
- (2024秋)部编版一年级语文上册《 四季》PPT课件【优质版】.pptx
- 脑出血患者护理心得.doc VIP
- 【全部】小学1--6年年级统编语文教材(上下册)古诗词.pdf
- 清华大学“应用随机过程”习题答案.pdf
- BDA-老虎基金京东深度研究报告EN-2015 05 19.pptx VIP
- 成都至峨眉山高速公路环评报告书.pdf VIP
- 人教版六年级数学上册第五单元《圆的认识》作业设计.pdf
文档评论(0)