我创建了一个文件的符号链接和该符号链接的硬链接。但是,不是硬链接,而是创建符号链接,并且两者的inode是相同的。 是否可以为符号链接创建硬链接?
答案 0 :(得分:2)
适用于linux。我们经常在一些关键任务代码中使用它。正如Jonathan所说,Posix标准并不能保证这一点,所以你应该仔细检查它是否适用于你的系统。
$ date >a
$ ln -s a b
$ ln b c
$ ls -li
total 4
396074 -rw-rw-r-- 1 ec2-user ec2-user 29 Oct 27 07:15 a
396345 lrwxrwxrwx 2 ec2-user ec2-user 1 Oct 27 07:16 b -> a
396345 lrwxrwxrwx 2 ec2-user ec2-user 1 Oct 27 07:16 c -> a
您可以使用--physical
标志来强制执行此操作。
-P, --physical
make hard links directly to symbolic links
答案 1 :(得分:1)
不可靠 - 如图所示(在Mac OS X 10.10.5 Yosemite上演示):
$ ls -l ???.c
-rw-r--r-- 1 jleffler staff 688 Oct 26 00:09 ncm.c
$ ln -s ncm.c ppp.c
$ ln ppp.c qqq.c
$ ls -l ???.c
-rw-r--r-- 2 jleffler staff 688 Oct 26 00:09 ncm.c
lrwxr-xr-x 1 jleffler staff 5 Oct 26 23:58 ppp.c -> ncm.c
-rw-r--r-- 2 jleffler staff 688 Oct 26 00:09 qqq.c
$
链接遵循符号链接,并在符号链接末尾创建文件,而不是符号链接本身。查看symlink()
和(特别是)的POSIX规范
link()
在link()
下,它说:
如果
path1
命名符号链接,则实现定义是link()
跟随符号链接,还是创建符号链接本身的新链接。
在Mac OS X上,它遵循符号链接。其他系统也可能采用不同的方式。