zl程序教程

您现在的位置是:首页 >  系统

当前栏目

ZYNQ - 嵌入式Linux开发 -03- 连接文件

2023-09-14 09:13:04 时间

linux连接文件两种方式

Linux有两种连接文件:符号连接(软连接)和硬链接,符号链接类似Windows下的快捷方式。硬链接通过文件系统的inode连接来产生新文件名,而不是产生新文件。

inode: inode 是 UNIX 操作系统中的一种数据结构,其本质是结构体,它包含了与文件系统中各个文件相关的一些重要信息。在 UNIX 中创建文件系统时,同时将会创建大量的 inode 。通常,文件系统磁盘空间中大约百分之一空间分配给了 inode 表。他用于记录文件属性,一个文件一个inode。inode 相当于文件ID,查找文件的时候要先找到inode,然后才能读出文件的内容。

硬链接

硬链接是多个文件都指向同一个inode。具有相同inode,的多个文件互为硬链接文件,创建硬链接相当于文件实体多了入口。对于硬链接文件,只有删除了源文件以及对应的所有硬连接文件,文件实体才会被删除。根据硬链接文件的特点,我们可以通过给文件创建硬连接的方式来防止文件误删除。不论修改源文件还是连接文件,另一个文件的数据都会被改变。

硬连接不能跨文件系统,不能连接到目录。因为这些限制,硬链接其实不常用。

下面对测试的C文件编译后可执行文件进行建立硬链接。

新建test.c文件,输入代码:

#include "stdio.h"
int main(){
	printf("hello_Word!\n");
}

然后进行编译

gcc test.c -o test

输入ls命令进行查看,此时已经生成了test可执行文件。

image-20210824140218908

然后进行建立硬连接,在终端中输入以下指令:

ln test test1

然后再键入ls查看,发现已经建立了硬链接test1。

image-20210824140451578

此时运行test1,可以正常运行。

image-20210824140433930

键入以下代码进行查看连接的inode,

ls -l -i

image-20210824140650856

如图所示,连接的两个inode相同,证明硬链接正常建立。

此时移除test的可执行文件可以正常执行test.c的代码功能。

image-20210824140844893

符号连接(软连接)

符号连接类似Windows 下的快捷方式,符号链接也叫做软连接,软连接要用的多。符号连接相当于创建了一个独立的文件,这个文件会让数据读取指向它连接的哪个文件的文件名。

软连接可以连接到目录。可以跨文件系统。删除源文件以后,软连接文件也就“打不开了"。符号连接文件通过->来指示具体的连接文件。

在终端中输入以下指令进行建立软连接:

ln -s test test2

此时终端如下:

image-20210824141238914

test2可执行文件标红,尝试执行test2无法正常执行。

image-20210824141356057

这是因为输入需要建立的连接是test 这里找不到test所以也就无法进行连接。当重新进行编译生成test的可执行文件,此时可以正常建立软连接:

image-20210824141550783

同时可以正常执行:

image-20210824141617822