linux程序设计

linux程序设计

ID:25975602

大小:5.66 MB

页数:217页

时间:2018-11-24

linux程序设计_第1页
linux程序设计_第2页
linux程序设计_第3页
linux程序设计_第4页
linux程序设计_第5页
资源描述:

《linux程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux程序设计第一章Linux文件IO1.1文件的概念及结构1.1.1文件定义定义文件:一组相关数据的有序集合。文件名:这个数据集合的名称。1.1.2文件类型常规文件(ASCII码文件、二进制的文件)目录字符设备块设备管道套接口符号连接1.1.3文件结构文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。在linux下,“一切皆是文件”!“一切皆是文件”是Unix/Linux的基本哲学之一。不仅普通的文件,目录、字符设备、块设备、套接字等在Unix/Linux中都是以文件被对待;它们虽然类型不同,但是对其提

2、供的却是同一套操作接口。可以在做一个这样的操作,在Linux下我们可以建议一个名为test文件夹,然后再创建一个test的文件,这样的操作在Linux下是不允许的,会报错文件已经存在.在windows下文件类型是以扩展名出现的,但是Linux可就不是这样子的,这里的一切皆是文件,你甚至可以用Linux下的Vi编辑器打开文件夹,这样你打开的文件夹看到就文件夹中的每一个文件,你可以定位到相应的文件位置之后就可以打开这个文件查看其中的内容。这时就会有人问那Linux下的扩展名有什么用处呢?比如file.txt、file.doc、file.sys

3、、file.mp3、file.exe等,根据linux文件扩展名就能判断文件的类型。但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关。但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。从这方面来说,Linux的扩展名没有太大的意义。现在的Linux桌面环境和Windows一样智能化,文件的类型是和相应的程序关联的。在我们打开某个linux文件时,系统会自动判断用哪个应用程序打开。如果从这方面来说,Linux下的扩展名只

4、是用来告诉编译器什么样的文件应该按什么样的方式进行编译的,Linux桌面环境和Windows桌面没有太大的区别。1.1.4VFS虚拟文件系统(VirtualFileSystem,简称VFS),是Linux内核中的一个软件层,用于给用户空间的程序提供文件系统接口;同时,它也提供了内核中的一个抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但依赖VFS共存,而且也依靠VFS协同工作。为了能够支持各种实际文件系统,VFS定义了所有文件系统都支持的基本的、概念上的接口和数据结构;同时实际文件系统也提供VFS所期望的抽象接口和数据结构,将自

5、身的诸如文件、目录等概念在形式上与VFS的定义保持一致。换句话说,一个实际的文件系统想要被Linux支持,就必须提供一个符合VFS标准的接口,才能与VFS协同工作。实际文件系统在统一的接口和数据结构下隐藏了具体的实现细节,所以在VFS层和内核的其他部分看来,所有文件系统都是相同的。下图显示了VFS在内核中与实际的文件系统的协同关系。从上图,我们可以简单的看出一个在用户空间的应用程序通过系统调用,经过VFS层面,再和设备驱动打交道,最后设备驱动驱动对应设备,这是一个比较简单的描述,如果分析起来也就不难得到:userspace的应用程序与VF

6、S的接口就是系统调用,VFS与驱动程序的接口就是file_operations。1.2linuxAPI帮助文档1.2.1.man在命令行用manXXX查看即可,按q退出。如查看open()函数,man2open即可,按空格键查看下一页;1.2.2在线文档也可登录Linuxman-pages主页查看:在这里我们可以查看到所有的API接口;http://man7.org/linux/man-pages/dir_all_alphabetic.html,1.3标准IO1.3.1流和FILE指针FILE指针:每个被使用的文件都在内存中开辟一个区域,

7、用来存放文件的有关信息,这些信息是保存在一个结构体类型的变量中,该结构体类型是由系统定义的,取名为FILE。标准I/O库的所有操作都是围绕流(stream)来进行的,在标准I/O中,流用FILE*来描叙的。1.3.2fopenfopen()函数主要用于对文件和终端的输入输出。但是如果要对设备的行为进行更为明确的行为控制,那最好使用底层系统调用,因为这样可以避免库函数带来的一些非预期的潜在副作用。函数原型:#includeFILE*fopen(constchar*filename,constchar*mode);filan

8、ame:指定的文件名,fopen会把它与一个文件流关联起来。mode:指定文件的打开方式返回值:成功时返回一个FILE*指针,失败返回NULL值,NULL定义在stdio.h中。mode参数如

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

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

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