建个网站有收,58同城 网站建设 推广排名,昆明免费建站模板,做商城网站多少钱⚫ Linux 系统的文件类型#xff1b;
普通文件#xff1a;存储数据#xff0c;如文本文件、可执行文件等。 目录#xff1a;用于组织文件和其他目录的特殊文件。 符号链接#xff1a;指向另一个文件或目录的引用#xff0c;类似于 Windows 中的快捷方式。 硬链接#x…⚫ Linux 系统的文件类型
普通文件存储数据如文本文件、可执行文件等。 目录用于组织文件和其他目录的特殊文件。 符号链接指向另一个文件或目录的引用类似于 Windows 中的快捷方式。 硬链接指向文件的相同 inode 的链接多个文件名共享同一数据。 块设备文件用于与块设备如硬盘进行交互的特殊文件。 字符设备文件用于与字符设备如串口设备进行交互的特殊文件。 套接字用于进程间通信的特殊文件。
’ - 普通文件 ’ d 目录文件 ’ c 字符设备文件 ’ b 块设备文件 ’ l 符号链接文件 ’ s 套接字文件 ’ p 管道文件
⚫ stat 系统调用
int stat(const char *pathname, struct stat *buf);bufstruct stat 类型指针用于指向一个 struct stat 结构体变量
struct stat
{dev_t st_dev; /* 文件所在设备的 ID */ino_t st_ino; /* 文件对应 inode 节点编号 */mode_t st_mode; /* 文件对应的模式 */nlink_t st_nlink; /* 文件的链接数 */uid_t st_uid; /* 文件所有者的用户 ID */gid_t st_gid; /* 文件所有者的组 ID */dev_t st_rdev; /* 设备号指针对设备文件 */off_t st_size; /* 文件大小以字节为单位 */blksize_t st_blksize; /* 文件内容存储的块大小 */blkcnt_t st_blocks; /* 文件内容所占块数 */struct timespec st_atim; /* 文件最后被访问的时间 */struct timespec st_mtim; /* 文件内容最后被修改的时间 */struct timespec st_ctim; /* 文件状态最后被改变的时间 */
};
⚫ 符号链接与硬链接
硬链接Hard Link 定义硬链接是指向相同 inode 的多个目录项。多个硬链接可以指向同一个文件数据但它们之间没有区别都是该文件的直接引用。 符号链接Symbolic Link / Soft Link 定义符号链接是一个特殊类型的文件它包含一个指向另一个文件的路径名。符号链接相当于一个快捷方式可以指向任意文件或目录。
⚫ 目录 删除文件
unlink()系统调用 实质上是移除 pathname 参数指定的文件路径对应的目录项从其父级目录中移除该目录项并将文件的 inode 链接计数将 1如果该文件还有其它硬链接则任可通过其它链接访问该文件的数据只有当链接计数变为 0 时该文件的内容才可被删除。另一个条件也会阻止删除文件的内容—只要有进程打开了该文件其内容也不能被删除。关闭一个文件时内核会检查打开该文件的进程个数如果这个计数达到 0内核再去检查其链接计数如果链接计数也是 0那么就删除该文件对应的内容也就是文件对应的 inode 以及数据块被回收如果一个文件存在多个硬链接删除其中任何一个硬链接其inode 和数据块并没有被回收还可通过其它硬链接访问文件的数据。
使用 remove 函数删除文件 与 unlink()、rmdir()一样remove()不对软链接进行解引用操作若 pathname 参数指定的是一个软链接文件则 remove()会删除链接文件本身、而非所指向的文件。
文件重命名
调用 rename()会将现有的一个路径名 oldpath 重命名为 newpath 参数所指定的路径名。rename()调用仅操作目录条目而不移动文件数据不改变文件 inode 编号、不移动文件数据块中存储的内容重命名既不影响指向该文件的其它硬链接也不影响已经打开该文件的进程譬如在重命名之前该文件已被其它进程打开了而且还未被关闭。