学习linux环境高级编程首先学习的是文件的操作。因为有
学习 Linux 环境高级编程,首先学习的是文件的操作。因为有一句很有趣的话“Linux
下一切皆文件”。所以掌握了文件操作的方法,也就算摸到了门路。
5.1 文件和目录
首先直观地感受一下,在终端下输入命令 ls -l,如图 5-1 所示。
图5-1 文件目录
5-1 2
图 的前 行为
drwxr-xr-x 2 root root 4096 2015-06-25 1111
-rw-r--r-- 1 root root 0 2015-06-25 11.c
125
1.drwxr-xr-x
drwxr-xr-x 代表的是文件类型和文件权限。常用的文件类型有:
1 -
() :普通文件,存各种数据。
2 d
() :目录文件,存结构体,结构体内部标识这个目录中的文件名称等信息。
3 l
() :链接文件,需要注意的是,软链接才是文件,而硬链接仅仅是一节点。
4 c
() :字符设备,除了块设备都是字符设备,没有扇区的概念。
5 b
() :块设备,所有存储类的驱动都称为块设备,包含扇区处理。
6 p
() :管道设备,是用内核内存模拟的通道。
从上述说明可以看出,例子中的文件是一个目录文件,原因是第一个符号代表文件类型,
d 代表此文件是一个目录文件。
2 .文件权限
文件权限有:
1 r 100 4
() 为读,二进制权重为 ,即 。
2 w 010 2
() 为写,二进制权重为 ,即 。
3 x 001 1
() 为执行,二进制权重为 ,即 。
4 - 0
() 为无操作,二进制权重为 。
5 rwx
() 的顺序不可改,表示可读可写可执行。
6 -wx
() 表示不能读,可写可执行。
上述就是文件权限的表示方法,文件权限是用八进制来表达的,如果一个文件有全部的
7 4+2+1 rwx
权限,那么对应八进制里的数是 ( )。同时读者会发现有多组 ,它所表达的不仅
仅是它自身的权限。这里涉及一个分组的概念。
1 u user
() 组:创建者( );
2 g group
() 组:创建者所在组的成员( );
3 o other
() 组:其他人所具备的权限( )。
也就是说,例子中的三组 rwx 都是依照上述顺序来说明权限的。例子里的文件权限就是:
创建者可读可写可执行,所在组的成员可读可执行,其他成员可读不可写不可执行。
3 .2
2 2
图中文件类型和权限之后是数字 ,这个 表示的是文件节点数,也就是说,此文件是
一个目录文件。所以,目录的节点数代表该目录下的文件个数,在这里应该是有两个文件。
如果此文件不是目录,只是普通文件,那么这个数字就代表硬链接的个数。关于链接的几点
说明如下:
1
()链接分为硬链接和软链接(符号链接,即快捷方式)。
2
()硬链接,只是增加一个引用计数,本质上并没有物理上的增加文件。硬链接不是
文件。
3
()符号链接,是在磁盘上产生一个文件,这个文件内部写入了一个指向被链接的文件
的指针。
4 ln
()采用