遵循C中的符号链接

时间:2009-10-14 22:40:34

标签: c symlink

我正在寻找一个C程序,它给出了符号链接的名称,它将打印链接所指向的文件或目录的名称。有关如何开始的任何建议吗?

4 个答案:

答案 0 :(得分:5)

已提及的readlink()函数是答案的一部分。但是,您应该知道它的可怕接口(它不会终止响应字符串!)。

您可能还想查看realpath()函数,我在SO 1563186中讨论了它的用法。您还可以在IIUG软件存档中查看“linkpath”的代码。它分析了在解析符号链接时遇到的所有目录的安全性 - 它使用readlink()lstat()以及stat();测试程序时的其中一项检查是确保realpath()将名称解析为同一文件。

答案 1 :(得分:4)

确保您拥有支持POSIX功能的环境,包括unistd.h,然后使用readlink功能。

答案 2 :(得分:1)

根据平台的不同,stat()fstat()可能是首先尝试的内容。如果您使用的是Linux或cygwin,那么stat程序将让您合理地了解系统API调用的内容(它几乎可以为您提供文本转储)。

答案 3 :(得分:0)

您想要的系统调用是readlink()。获取链接的路径,返回链接中存储的字符串(始终是文件系统中的有效路径!)。有关详细信息,请查看手册页(“man 2 readlink”)。

请注意,您的问题有些含糊不清。你可能会问如何告诉文件系统中的“真实”路径,这有点复杂。