4.17 符号链接

本文探讨了符号链接与硬链接的不同之处,解释了符号链接如何克服硬链接的局限性,包括跨文件系统链接和普通用户创建目录链接的能力。文中还讨论了在处理符号链接时各种系统函数的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    符号链接是对一个文件的间接指针,它与上一节所述的硬链接由所不同,硬链接直接指向文件的i节点。引入符号链接的原因是为了避开硬链接的一些限制。

  • 硬链接通常要求链接和文件位于同一文件系统中。
  • 只有超级用户才能创建指向目录的硬链接(在底层文件系统支持的情况下)。

    对符号链接以及它指向何种对象并无任何文件系统限制,任何用户都可以创建指向目录的符号链接。符号链接一般用于将一个文件或整个目录结构移到系统中另一个位置。

    当使用以名字引用文件的函数时,应当了解该函数是否处理符号链接。也就是该函数是否跟随符号链接到达它所链接的文件。如若该函数具有处理符号链接的功能,则其路径名参数引用由符号链接指向的文件。否则,一个路径名参数引用链接本省,而不是由该链接指向的文件。图4-17列出了本章中所说明的各个函数是否处理符号链接。在图4-17中没有列出mkdir、mkinfo、mknod和rmdir这些函数,其原因是,当路径名是符号链接时,它们都出错返回。以文件描述符作为参数的一些函数(如fstat、fchomd等)也未在该图中列出,其原因是,对符号链接的处理是由返回文件描述符的函数(通常是open)进行的。chown是否跟随符号链接取决于实现。在所有现代的系统中,chown函数都跟随符号链接。

    图4-17的一个例外是,同时用O_CREAT和O_EXCL两者调用open函数。在此情况下,若路径名引用符号链接,open将出错返回,errno设置为EEXIST。这种处理方式的意图是堵塞一个安全性漏洞,以防止具有特权的进程被诱骗写错误的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值