符号链接是指向一个文件的间接指针。他与上一节所诉的硬链接不同。硬链接直接指向文件的i节点。引入 符号链接的原因是为了避开硬链接的一些限制。
硬链接通常要求链接和文件位于同一文件系统中。
只有超级用户才能创建指向目录的硬链接。
对符号链接以及他指向何种对象并无任何文件系统限制。任何用户都可以创建指向目录的符号链接。符号 链接一般用于将一个文件或这个目录结构移动到系统中的另一个位置。
当使用以名字引用文件的函数 的时候,应当了解该函数是否处理符号链接。也就是该函数是否跟随符号链接到达它锁链节的文件。如若该函 数具有处理符号链接的功能,则其路径名参数引用由符号链接指向的文件。否则路径名参数将引用链接本身。 而不是该链接指向的文件。下表列出了本章中所说明的各个函数是否处理符号链接。
函数 | 不跟随符号链接 | 跟随符号链接 |
access | ||
chdir | ||
chmod | ||
chown | ||
creat | ||
exec | ||
lchown | ||
link | ||
lstat | ||
opendir | ||
pathconf | ||
readlink | ||
remove | ||
rename | ||
stat | ||
truncate | ||
unlink |
上表没有列出mkdir,mkinfo,mknod和rmdir这些函数。其原因是当路径名是符号链接的时候,他 们都出现错误返回。以文件描述符作为参数的一些函数也未在该表中列出。原因是,对富豪链接的处理是由返 回文件描述符的函数同事是open进行的。chown是否跟随符号链接取决于实现。
上表中一个例外是,同 时用O_CREAT和O_EXCL两者调用open函数。在此情况下,若路径名引用符号链接,open函数将出错返回。并将 errno设置成EEXIST..这种处理方式的意图是阻塞一个安全性漏洞。使其具有特权的进程不会被诱骗对不适合 的文件进行写操作。
实例:
使用符号链接可能在文件系统中引入循环。大多数查找路径名的函 数在这种情况下发生时都将返回值为ELOOP和errno。
[devis@gdmss unix_pro]$ mkdir foo [devis@gdmss unix_pro]$ touch foo/a [devis@gdmss unix_pro]$ ln -s ../foo foo/testdir [devis@gdmss unix_pro]$ ls -l foo
总计 0 -rw-rw-r-- 1 devis devis 0 10-24 22:03 a lrwxrwxrwx 1 devis devis 6 10-24 22:03 testdir -> ../foo
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 函数
, 链接
, unix高级编程
, 符号
, 处理
, 指向
, 符号链接
opendir()列出文件
,以便于您获取更多的相关知识。