linux应用基础知识点4-文件的分类和属性
linux应用基础知识点4-文件的分类和属性
文本文件和二进制文件
文本文件是按照一定编码格式存储的文件(其实质也是二进制数字,不过有编码规则可循),二进制文件存储的是纯粹的二进制数字(如gcc生成的bin文件)。
linux本身并不区别对待这两种文件,当我们使用文本编辑器如vi、gedit等打开一个文件时,编辑器会读出文件的二进制数字,然后按照编码格式去解码还原成文字给用户看。
目录文件
是一种特殊的文件,可以vi查看其内容,包括文件的路径、目录中包含的子文件等等信息。
也可用opendir与readdir函数读取其内容:
opendir打开一个目录后返回一个DIR类型的指针,readdir可通过该指针得到一个dirent类型的结构体,该结构体即包含了一个子文件的inode name等信息。readdir一次调用返回一个子文件,可以多次调用继续读取其它子文件。
由于readdir函数每次调用都对下次调用有影响,即该函数是不可重入函数,有一定的隐患。于是c标准库提供了一个可重入版本(一般在原函数后加“_r”)readdir_r。
设备文件
包括字符设备文件、块设备文件。设备文件对应硬件设备,是文件系统虚拟制造出来的(虚拟文件系统,如/dev /sys /proc等),并不是真正存在于硬盘上的文件。虚拟文件系统大多不能直接读写,而是通过特殊API来读写或生成的。
管道文件:略
套接字文件:略
符号链接文件
硬链接:一个文件对应一个inode,而一个inode如果对应多个文件名,则称该文件名为硬链接。硬链接相当于一个文件的别名,它们有共同的inode。(一个目录中的./和…/文件即为硬链接)
软链接:有自己的inode号以及用户数据块,有自己的文件属性及权限。当原文件删除时,该软链接就变成了一个死链接。
各类文件的属性字符
通过ls -l查看文件的详细信息,其中属性字段的第一个字符即代表文件的类型。
-:普通文件
d: 目录文件
p:管道文件
s: 套接字文件
b:块设备文件
c:字符设备文件
l:符号链接文件
文件的属性
文件的属性,如大小、类别、权限等信息是存在于文件中的,可以通过stat、fstat、lstat这些API来获取属性信息。
stat函数
int stat(const char *path, struct stat *buf);
buf为输出型参数,用来获取文件属性。可以使用S_ISREG、S_ISDIR、S_ ISCHR等函数对获取的属性buf.st_mode进行判断,是否为普通文件、目录文件、字符设备文件。
fstat函数
int fstat(int fd, struct stat *buf);
fstat与stat类似,区别是输入对象是打开的文件描述符,而不是路径。
lstat函数
int lstat(const char *path, struct stat *buf);
当文件为符号链接文件时,lstat查看的是符号链接本身,而fstat和stat则是查看的指向文件。
- 点赞
- 收藏
- 分享
- 文章举报
- Linux文件属性之用户和组基础知识介绍
- linux应用基础知识点7-虚拟文件系统
- Linux基础知识+文件属性权限+FHS+目录树
- linux应用基础知识点5-文件的权限
- linux文件系统基础知识
- Linux操作系统文件系统基础知识详解
- Linux基础知识总结-文件管理
- linux文件系统基础知识
- linux文件系统基础知识
- Linux基础知识总结-文件
- java基础知识回顾之javaIO类--File类应用:递归深度遍历文件
- linux文件系统基础知识(转帖)
- Linux操作系统文件系统基础知识详解
- Linux基础知识总结(1): 用户组与文件权限
- Linux基础知识学习记录:su与sudo命令的比较,ubuntu下的inittab文件
- oc基础知识:属性、协议和分类
- Linux-->基础知识-->linux 下查找文件的方法 find
- linux文件系统基础知识
- LInux文件基础知识和文件目录操作(二)文件I/O操作
- Linux操作系统文件系统基础知识详解