1 / 41
文档名称:

Linux系统编程.doc.doc

格式:doc   页数:41页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Linux系统编程.doc.doc

上传人:xinsheng2008 2016/5/4 文件大小:0 KB

下载得到文件列表

Linux系统编程.doc.doc

相关文档

文档介绍

文档介绍:Linux 系统编程在 linux 系统中所有的东西都是文件,很多的系统会话都是通过对文件的读写进行的,所以操作文件是很重要的, 而操作文件的第一步就是要先打开文件, 一个打开的文件通过一个文件描述符(file descriptor) 的东西引用,在 Linux 系统中文件描述符是由一个整数控制的,文件描述符可以直接被用户使用来进行文件操作,一般都有的几步就是打开,执行操作,关闭。我们叫做文件的东西, Linux 将其标签为 regular files ( 常规文件),一个 regular file ( 常规文件)包含的 n 字节的数据,这些字节被组织进一个线性数组,叫做字节流,这些字节可能有任意的值,可能以任意的方式组织进文件中, Linux 系统不强制任何超越字节流的文件结构,文件中的任意字节能够被读以及写,这读写操作都是从一个特别的字节开始的,在概念上理解为文件的位置,术语叫做文件位置或者是文件偏移, 当一个文件首次被打开时,文件位置是 0 ,由于文件中的字节是一字节一字节的读或者写的,性质上文件位置也是增加的,文件位置也可以手动的设置为某一值,在文件末尾后端写入字节将会导致这些超越的直接被填充成 0 ,虽然可以在文件末尾后面写入字节,但是不能在文件开头之前写入字节,向文件中的某一个字节写入新的值将会导致该字节的老值被覆盖,而不会导致文件被扩大,文件的大小其实就是该文件所占的字节数组的大小,文件的大小可以使用一个叫做切断(truncation) 的操作来进行,切断能够能够将一个文件切割的比原来小,也可以将一个文件变的比原来小,一个文件能够不止一次的被相同的或者不同的进程打开,每一个被打开的文件都被分配了一个独立的文件描述符,进程之间能够共享他们拥有的文件描述符,多个进程允许同时读取或者写入同一个文件,虽然文件通常是通过文件名来获取,但是事实上他们不是通过这些名字,文件通过一个 inode 来引用,这个 inode 被分配了一个独立的数字值,这个值叫做 inod e 号, inode 中存贮的是与文件相关的原始数据,比如修改事件记录,文件所有人,文件类型,文件大小,以及文件数据位置,但是就是不存文件名!!! Inode 即是一个实实在在存在的对象,存在于 Unix 风格的文件系统中,并且还是一个概念上的事物,在 Linux 内核中使用了一个数据结构来表示。文件夹的作用就是提供一个文件名和其 inode 号的映射,在磁盘上这个映射存在的方式就是一个表,哈希表,文件夹同样被认为是一个一般的文件,只不过这个文件中包含的是文件名到 inode 号的映射,内核直接使用这个映射完成文件名到 inode 号的解析。当用户请求打开一个文件时,首先内核先打开包含该文件名的文件夹,然后搜索给定的文件名,从文件名中,内核获取的是 inode 号,从 inode 号,内核找到 inode , inode 包含该文件的关联信息,包括这个文件中的数据在磁盘上的位置,最初,在 linux 系统上只有唯一的一个文件夹, root 文件夹,但是是加上一个系统中往往含有很多的文件夹,那么系统是怎样的指导怎样在这些文件夹中寻找某个文件的。前面提到,文件夹是文件,他们拥有关联的 inode ,文件夹中的链接能够指向其他文件夹的 inode ,意味着文件夹能嵌入到其他的文件夹中,构成一个文件夹层次系统。当内核要打开一个路径名时,他将便利该路径中的每一个文件夹来寻找下一个文件夹的 inode ,在前面的实例/home/blackbeard/ 中,内核从/ 开始,得到了 home 的 inode, 然后获得,blackbeard 的 inod e 然后得到 的 inode , 这叫做文件夹或者路径名解析, Linux 系统使用一个缓冲,来存储文件夹解析的结果,路径名从 root 文件夹开始的叫做绝对路径名,有的是相对的,例如(X/Y), 当提供了一个相对路径时,内核从当前工作文件夹开始解析,从当前的文件夹开始查询。虽然文件被当做是一般的文件, 但是系统不允许将他们像一般的文件一样打开操作,要操作文件夹,必须使用特定的系统调用,这些系统调用将会进行一定的链接增添和删除操作,设想如果用户能轻易地操作文件夹的话,一个简单的错误将会摧毁整个文件系统。概念上来说,多个文件名对应到一个 inode 上是允许的当有多个文件名被映射到同一个文件 inode 时,叫做硬链接,硬链接容忍复杂的文件系统结构,硬链接能在同一个文件夹下,或者这两个以上的文件夹下,内核,仅仅将路径名解析到正确的 inode 下,例如,一个特定的志向一个特定的数据块能够被硬链接到/home/bluebeard/ 以及/home/bla