遵循C中的符号链接

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

确保您有一个支持POSIX函数的环境,包括unistd.h ,然后使用readlink函数。

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

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

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

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

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