linux文件操作学习总结---李向勇

linux文件操作学习总结---李向勇

ID:6142653

大小:255.33 KB

页数:11页

时间:2018-01-04

linux文件操作学习总结---李向勇_第1页
linux文件操作学习总结---李向勇_第2页
linux文件操作学习总结---李向勇_第3页
linux文件操作学习总结---李向勇_第4页
linux文件操作学习总结---李向勇_第5页
资源描述:

《linux文件操作学习总结---李向勇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、姓名:李向勇导师:乔永锋时间:2016.1.9Linux文件操作1文件操作简介31.1概念31.2操作32文件访问-系统调用42.1文件描述符42.2write系统调用42.3read系统调用52.4open系统调用62.5close系统调用82.6ioctl系统调用8 3标准IO库93.1fopen函数104.2fread/fwrite函数104.3fclose函数114.4fflush函数111文件操作简介在Linux中,一切皆文件,简单的说,C中基本的的printf()函数,scanf()函数,

2、其实都属于文件操作。对于文件操作,虽然都是通过函数调用的方式实现,却还是能分为两类:系统调用和库函数。1.1概念按照普通的定义,文件不过是一堆数据,在往下说,就是存储器中的0101。。。而我们这里讨论的文件有了更广的定义。对于Linux中的文件,我的理解是:Linux中的文件具有的特点是:可通过操作系统或者程序对外提供信息,也能对内输入信息,可以被创建,删除。Linux中,文件有特别重要的意义,他们为操作系统和设备提供了一个简单而统一的接口。在Linux中,几乎一切都可以看做是文件。这就意味着,普通程

3、序完全可以像使用文件(普通定义)那样使用磁盘文件、串行口、打印机和其他设备。硬件设备在linux操作系统中也被表示为文件。例如,可以通过如下命令把cd-rom驱动器挂载为一个文件,#mount-tiso9660/dev/hdc/mnt/cdrom#cd/mnt/rom然后,就能像访问普通文件那样在cd-rom目录中漫游。1.2操作和操作一般意义上的文件一样,linux中对文件的操作只需要五个基本的函数:open、close、read、write和ioctl通过调用这几个函数就能对linux中的文件进行

4、读、写等操作。不过,这种操作又分为系统调用和库函数调用。简单的说,系统调用是最直接的方式,库函数调用最终也是通过系统调用实现的。可认为库函数调用是对系统调出于效率考虑而做出的优化。库函数调用和系统调用的区别和联系请参看:linux系统调用和库函数调用的区别我们用很少的函数就可以对文件和设备进行访问和控制。这些函数就是所谓的系统调用,由操作系统直接提供,他们是通向操作系统本身的接口。操作系统的核心部分,既内核,其实就是一组设备驱动程序。这是一些对硬件进行控制的接口。2文件访问-系统调用通过系统调用来访问

5、文件是最直接的方式。系统调用函数直接作用于操作系统内核的设备驱动程序从而实现文件访问。2.1文件描述符在系统中需要处理的文件(读、写操作)需要一个标识,以便在其它地方能识别出这个文件,于是就产生了文件描述符。文件描述符是一些小值整数,简单的说就是一个文件ID用于在系统中唯一的标识文件。文件描述符的总数也就是系统可以打开文件的最多个数,这取决于系统的配置情况。当开始运行程序时,也就是系统开始运行时,它一般会有三个已经打开的文件描述符。他们是:·0:标准输入·1:标准输出·2:标准错误其它文件的文件描述符

6、,在调用文件打开函数open时返回。这就是说,每个设备对应着一个文件描述符。文件描述符由操作系统分配,每次分配最小的。2.2write系统调用write,就是把缓冲区的数据写入文件中。注意,这里的文件时广泛意义的文件,比如写入磁盘、写入打印机等等。Linux中write()的函数原型:size_twrite(intfildes,constvoid*buf,size_tnbytes);参数说明:fildes:文件描述符,标识了要写入的目标文件。例如:fildes的值为1,就像标准输出写数据,也就是在显示

7、屏上显示数据;如果为2,则想标注错误写数据。*buf:待写入的文件,是一个字符串指针。nbytes:要写入的字符数。函数返回值:size_t 返回成功写入文件的字符数。需要指出的是,write可能会报告说他写入的字节比你所要求的少。这并不一定是个错误。在程序中,你需要检查error已发现错误,然后再次调用write写入剩余的数据。请看下面的例子:运行结果:这个程序只在标准输出上显示一条消息。2.3read系统调用系统调用read是从文件中读出数据。要读取的文件用文件描述符标识,数据读入一个事先定义好的

8、缓冲区。他返回实际读入的字节数。Linux中read的函数原型:size_tread(intfildes,void*buf,size_tnbytes);参数说明:fildes:文件描述符,标识要读取的文件。如果为0,则从标准输入读数据。类似于scanf()的功能。*buf:缓冲区,用来存储读入的数据。nbytes:要读取的字符数。返回值:size_t返回成功读取的字符数,它可能会小于请求的字节数。运行结果:2.4open系统调用系统调用open的作用是打

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。