免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: bjgirl
打印 上一主题 下一主题

关于硬连接和软链接的问题?  关闭 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2004-05-25 17:56 |只看该作者

关于硬连接和软链接的问题?

总结几点硬链接和软链接的区别:

1.硬链接文件和原文件指向同样的数据,两者就像科隆一样,inode号也相同,当删除原文件时,硬链接文件仍然存在有效。但硬链接文件不同于文件的复制。应该说硬链接文件的产生只是原文件所在目录文件的内容发生改变,原文件的数据并没有得到复制,而复制文件,磁盘上有两份数据。简单说,硬链接就是一个类似于别名的概念。当原来的名字没有了,别名照样可以使用。
2.软连接和windows系统的快捷方式含义一样,不做多的解释。软链接和原文件的inode不同,该文件的内容是指向原文件的路径信息。软链接就好像是指针一样。而硬链接就是引用。
3.思考:对于文件系统而言,增加一个硬链接文件与增加一个软链接文件,哪种方式将使用的空间多。


答案,当然是后者。

论坛徽章:
0
22 [报告]
发表于 2006-10-23 13:31 |只看该作者

详细解释

我来好好解释一下!虽然是初学者,但更能将心比心的解释清楚

楼上的说了很对,硬连接就是给原来的文件真加了一个别名。大家都知道linux是以文件形式管理目录的,那么新建立了一个文件(取了文件名),那么在目录文件中就会加上这个文件的文件名加以管理这个文件,我们对文件操作就可以通过文件名实现,linux就会在目录文件中了解这个文件名所指定的那个文件。硬连接就会在目录文件中再起一个名字,而且和原来的文件名有一样的功能。所以这样文论对那个文件名操作都是对原来建立的文件的实体的操作。硬连接只是备份一个文件名,并没有实际增加一个原来一样的文件,所以和cp是有区别的!

软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows下的快捷方式的那个文件有很接近的意味)。软连接产生的是一个新的文件,但这个文件的作用就是专门指向末个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系!

论坛徽章:
0
23 [报告]
发表于 2006-10-23 14:53 |只看该作者
unix/linux下的文件有2部分,数据和文件名。数据的地址由inode来管理,而文件名指向indoe.
有超过1个的文件名部分指向同一个indoe,这些文件名则叫做硬连接。
当一个文件的数据部分是一个到另一个文件的路径,则这个文件叫做软连接。
可以通过下面的方法来测试一下。
$touch 1
$ln 1 2
$ln -s 1 3
然后用stat看3个文件的属性,1和2的inode号是同一个。

论坛徽章:
0
24 [报告]
发表于 2006-10-25 16:58 |只看该作者
复制文件:
ptr1 = malloc(SIZE);
ptr2 = malloc(SIZE);
memcpy(ptr2, ptr1, SIZE);

硬链接:
ptr1 = malloc(SIZE);
ptr2 = ptr1;

软链接:
ptr1 = malloc(SIZE);
ptr = malloc(4);
*ptr = ptr1;

根据happyjoy总结的软硬链接C语言版,不知道对不对^_^

论坛徽章:
0
25 [报告]
发表于 2006-10-25 17:11 |只看该作者
可以这么理解,没有ln之前的文件名其实就是一个硬链接,ln之后的东东在本质上与ln之前的东东是一模一样的。
软链接个人感觉与windows的快捷方式还不一样,在linux上是kernel直接支持的,windows上好像只是在应用层作了一些文章,不知对不对,对windows快捷方式不太了解。

论坛徽章:
0
26 [报告]
发表于 2006-10-26 00:05 |只看该作者
原帖由 picktracy 于 2006-10-25 16:58 发表
复制文件:
ptr1 = malloc(SIZE);
ptr2 = malloc(SIZE);
memcpy(ptr2, ptr1, SIZE);

硬链接:
ptr1 = malloc(SIZE);
ptr2 = ptr1;

软链接:
ptr1 = malloc(SIZE);
ptr = malloc(4);
*ptr = ptr1;
...


个人感觉软链接应该是这样的
ptr1 = malloc(SIZE);
ptr2 = &ptr1;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP