这次编写的是硬链接与软连接相关的程序:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int ret;
if(argc < 5)
{
printf("please check the input file!");
return 1;
}
//硬链接
ret = link(argv[1], argv[2]);
if(ret)
{
printf("link failed!");
return 0;
}
printf("link %s to %s success", argv[1], argv[2]);
//软连接
ret = symlink(argv[3], argv[4]);
if(ret)
{
printf("symlink failed!");
return 0;
}
printf("symlink %s to %s success", argv[3], argv[4]);
return 0;
}
在linux中编译程序:gcc link.c -o link后,生成名为link的文件,再运行
./link chdir chdir1 mkdir mkdir1命令,用两种连接生成新的文件,具体如下图:
用硬连接生成的是chdir1,用软连接生成的是mkdir1,很明显,硬链接生成的文件的文件标识与源文件一样,而软连接的标识不一样。硬连接生成的文件与源文件一摸一样,对任何一个文件改动,另一个也跟着变动;软连接生成的文件相当于源文件的快捷方式。
以下是在上面的基础上,调用删除连接的函数删除连接的程序:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int ret;
if(argc < 3)
{
printf("please check the file!\n");
return 1;
}
//删除硬链接
ret = unlink(argv[1]);
if(ret)
{
printf("unlink %s failed!\n", argv[1]);
return 1;
}
printf("unlink %s success!\n", argv[1]);
//删除软链接
ret = unlink(argv[2]);
if(ret)
{
printf("unlink %s failed!\n", argv[2]);
return 1;
}
printf("unlink %s success!\n", argv[2]);
return 0;
}
以下是linux上的截图: