Linux文件操作学习总结---李向勇精选.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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返回成功读取的字符数,它可能会小于请求的字节数。

文档评论(0)

2518887 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档