我正在寻找一个C程序,它给出了符号链接的名称,它将打印链接所指向的文件或目录的名称。有关如何开始的任何建议吗?
答案 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”)。
请注意,您的问题有些含糊不清。你可能会问如何告诉文件系统中的“真实”路径,这有点复杂。