-------------------------------------资源来源于网络,仅供自学使用,如有侵权,联系我必删.
第一:
硬链接和软链接基本概念
– 硬链接类似于拷贝,但与源文件同步更新,权限、大小、时间值均与源文件一样,inode也与源文件相同
--和硬链接对应的是软链接,也可以叫符号链接或者 symlinks,软连接不是文件系统的文件名和 inode 的映射,而是一种指针,在运行的时候解释
前面介绍的 linux 命令中,有 ln 命令可以创建链接,如下图所示,使用“man ln”查看一下。
如上图所示,可以看到关于ln的功能描述。它是用来创建一个TARGET到真实的文件的link(链接)。这也算是 linux 中一种特殊的文件,就像 windows 下的快捷方式,也属于 window下的文件。
第二:
实验-硬链接 link
使用 man 学习 link 函数
1)如下图所示,使用命令“man 2 link”
2)如下图所示,函数 link
3)接着注意一下相关的函数,如下图所示
4)最后介绍一下 link 函数。
int link(const char *oldpath, const char *newpath);
参数*oldpath:已有的文件路径。
参数*newpath:新建的硬链接文件路径。
返回值:成功返回 0,错误返回-1。
第三:
link 函数例程
1)编写简单的 link.c 文件测试 link 函数
#include <stdio.h>
//link函数头文件
#include <unistd.h>
int main(int argc,char *argv[])
{
int ret;
//测试 main 函数传递的参数
if(argc <3){
printf("\nPlease input file path\n");
return 1;
}
//测试link函数
//使用函数 link,给 argv[1]和 argv[2]建立 link 硬链接
ret = link(argv[1],argv[2]);
if(ret)
{
printf("link failed");
return 1;
}
printf("link %s to %s success!\n",argv[1],argv[2]);
return 0;
}
2)编译运行测试
a)在 Ubuntu 系统下,如下图所示,进入前面实验创建的目录“/home/linuxsystemcode/CatlogFile”,将源码 link.c 拷贝进去,进入文件夹 CatlogFile,如下图所示。
b)使用命令“arm-none-linux-gnueabi-gcc -o link link.c -static”编译 link 文件,如下图所示,使用命令“ls”可以看到生成了 link 可执行文件
c)拷贝到挂载点
d)开发板使用 vi 编辑器新建一个 linktest.c 文件,文件中内容为“hello linux link!”
e)开发板挂在后运行文件
在link的目录下创建linktest.c文件,运行后可以看到硬链接建立的完全一样的文件,inode 是相同的
f)使用 vi 命令打开 linktest,查看其中的内容
---------------------------------------------------------------------------------------------------------------
第四:
实验-符号链接 symlink
符号链接也叫软链接-symlink
使用 man 学习 symlink 函数
1)如下图所示,使用命令“man 2 symlink”
如下图所示,函数 symlink 和 link 函数用法差不多
接着注意一下相关的函数,如下图所示
2)接着介绍一下 symlink 的用法
软链接函数
• int symlink(const char *oldpath, const char *newpath);
– 参数*oldpath:已有的文件路径
– 参数*newpath:新建的符号链接文件路径
– 返回值:成功返回0,错误返回-1
第五:
编写简单的 symlink.c 文件测试 symlink 函数
#include <stdio.h>
//symlink函数头文件
#include <unistd.h>
int main(int argc,char *argv[])
{
int ret;
//测试 main 函数的参数
if(argc <3){
printf("\nPlease input file path\n");
return 1;
}
//测试symlink函数
//使用 symlink 函数给 argv[1],argv[2]建立符号连接(软连接)
ret = symlink(argv[1],argv[2]);
if(ret)
{
printf("symlink failed");
return 1;
}
printf("symlink %s to %s success!\n",argv[1],argv[2]);
return 0;
}
第六:
编译运行测试
1)在 Ubuntu 系统下,如下图所示,进入前面实验创建的目录“/home/linuxsystemcode/CatlogFile”,将源码 symlink.c 拷贝进去,进入文件夹CatlogFile,如下图所示
2)使用命令“arm-none-linux-gnueabi-gcc -o symlink symlink.c -static”编译 symlink文件,如下图所示,使用命令“ls”可以看到生成了 symlink 可执行文件。
3)将文件拷贝到挂载点
4)在开发版挂载后,使用程序给前一个实验中 linktest.c 文件建立软连接,如下图所示
5)如下图所示,使用 ls 命令查看新建的软连接文件,可以发现和之前的并不是同一个文件,inode 不一样,说明是不同的文件
6)打开之后也是显示同样的内容,其中链接到 linktest.c 的软链接文件 symlink.c 之后显示的也是同样的内容,如下图所示
---------------------------------------------------------------------------------------------------------------
第七:
实验-解除链接 unlink
解除链接unlink
使用 man 学习 unlink 函数
1)如下图所示,使用命令“ man 2 unlink”
2)如下图所示,函数 unlink
3)接着注意一下相关的函数,如下图所示
4)接着介绍一下 unlinke 的用法
解除链接函数
• int unlink(const char *pathname);
– 参数*pathname:链接文件的路径
– 返回值:成功返回0,错误返回-1
– unlink指向软链接,删除软链接;指向最后一个硬链接,相当于删除文件
第八:
unlink 函数例程
编写简单的 unlink.c 文件测试 unlink 函数
#include <stdio.h>
//unlink函数头文件
#include <unistd.h>
int main(int argc,char *argv[])
{
int ret;
//测试 main 函数的参数
if(argc <2){
printf("\nPlease input file path\n");
return 1;
}
//测试unlink函数
//使用 unlink 函数将 argv[1]文件的软连接或者硬链接取消
ret = unlink(argv[1]);
if(ret)
{
printf("unlink failed");
return 1;
}
printf("unlink %s is success!\n",argv[1]);
return 0;
}
第九:
编译运行测试
1)在 Ubuntu 系统下,如下图所示,进入前面实验创建的目录
“/home/linuxsystemcode/CatlogFile”,将源码 unlink.c 拷贝进去,进入文件夹 CatlogFile,如下图所示。
2)使用命令“arm-none-linux-gnueabi-gcc -o unlink unlink.c -static”编译 unlink 文件,
如下图所示,使用命令“ls”可以看到生成了 unlink 可执行文件
3)将文件拷贝到挂载点
4)在开发板挂载后,使用命令“./mnt/udisk/unlink symlink.c”运行程序如下所示,这里取消了前一个实验建立的软连接文件。
使用 ls 命令查看链接文件,已经消失了