linux程序设计剖析.doc

  1. 1、本文档共217页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux程序设计剖析

Linux程序设计 第一章 Linux 文件IO 1.1 文件的概念及结构 1.1.1文件定义定义 文件:一组相关数据的有序集合。 文件名:这个数据集合的名称。 1.1.2 文件类型 常规文件(ASCII码文件、二进制的文件) 目录 字符设备 块设备 管道 套接口 符号连接 1.1.3文件结构 文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。 在linux下,“一切皆是文件”! “一切皆是文件”是 Unix/Linux 的基本哲学之一。不仅普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作。 可以在做一个这样的操作,在Linux下我们可以建议一个名为test文件夹,然后再创建一个test的文件,这样的操作在Linux下是不允许的,会报错文件已经存在在indows下文件类型是以扩展名出现的,但是Linux可就不是这样子的,这里的一切皆是文件,你甚至可以用Linux下的Vi编辑器打开文件夹,这样你打开的文件夹看到就文件夹中的每一个文件,你可以定位到相应的文件位置之后就可以打开这个文件查看其中的内容。这时就会有人问那Linux下的扩展名有什么用处呢? 比如file.txt、file.doc、file.sys、file.mp3、 file.exe等,根据linux文件扩展名就能判断文件的类型。但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关。但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便。从这方面来说,Linux的扩展名没有太大的意义。 现在的Linux桌面环境和Windows一样智能化,文件的类型是和相应的程序关联的。在我们打开某个linux文件时,系统会自动判断用哪个应用程序打开。如果从这方面来说,Linux下的扩展名只是用来告诉编译器什么样的文件应该按什么样的方式进行编译的Linux桌面环境和Windows桌面没有太大的区别。 VFS 虚拟文件系统(Virtual File System, 简称 VFS), 是 Linux 内核中的一个软件层,用于给用户空间的程序提供文件系统接口;同时,它也提供了内核中的一个抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但依赖 VFS 共存,而且也依靠 VFS 协同工作。 为了能够支持各种实际文件系统,VFS 定义了所有文件系统都支持的基本的、概念上的接口和数据结构;同时实际文件系统也提供 VFS 所期望的抽象接口和数据结构,将自身的诸如文件、目录等概念在形式 上与VFS的定义保持一致。 换句话说,一个实际的文件系统想要被 Linux 支持,就必须提供一个符合VFS标准的接口,才能与 VFS 协同工作。实际文件系统在统一的接口和数据结构下隐藏了具体的实现细节,所以在VFS 层和内核的其他部分看来,所有文件系统都是相同的。下图显示了VFS在内核中与实际的文件系统的协同关系。 1.2 linux API帮助文档 1.2.1. man 在命令行用man XXX 查看即可 ,按q退出。如查看open()函数,man 2 open 即可,按空格键查看下一页; 1.2.2在线文档 也可登录Linux mans主页查看:在这里我们可以查看到所有的API接口; /linux/mans/dir_all_alphabetic.html, 1.3 标准IO 1.3.1 流和FILE指针 FILE指针:每个被使用的文件都在内存中开辟一个区域,用来存放文件的有关信息,这些信息是保存在一个结构体类型的变量中,该结构体类型是由系统定义的,取名为FILE。 标准I/O库的所有操作都是围绕流(stream)来进行的,在标准I/O中,流用FILE *来描叙的。 1.3.2 fopen fopen()函数主要用于对文件和终端的输入输出。但是如果要对设备的行为进行更为明确的行为控制,那最好使用底层系统调用,因为这样可以避免库函数带来的一些非预期的潜在副作用。 函数原型: #include stdio.h FILE *fopen(const char *filename, const char *mode); filaname:指定的文件名,fopen会把它与一个文件流关联起来。 mode:指定文件的打开方式 返回值:成功时返回一个FILE*指针,失败返回NULL值,NULL定义在stdio.h中。 mode参数如下所示: r/rb:只读方式打开 w/wb:只写方式打开,把文件长度截为0(你可把它想象为) a/ab:只写方式打开,新内容追加到文件尾(

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档