5

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

4

4 回答 4

9

readlink()已经提到的功能是答案的一部分。但是,您应该知道它可怕的界面(它不会终止响应字符串!)。

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

于 2009-10-14T23:01:07.387 回答
6

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

于 2009-10-14T22:47:23.403 回答
1

取决于平台,stat()或者fstat()可能是首先要尝试的东西。如果您使用的是 Linux 或 cygwin,那么该stat程序将让您对系统 API 调用的期望有一个合理的了解(它几乎为您提供了它的文本转储)。

于 2009-10-14T22:45:01.740 回答
0

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

请注意,您的问题有些模棱两可。您可能会问如何分辨文件系统中的“真实”路径,这有点复杂。

于 2009-10-14T22:47:56.587 回答