获取符号链接的真实路径

时间:2013-08-10 07:25:39

标签: c linux

假设我想获得符号链接的真实路径。我知道readlinkstat系统调用都可以取消引用链接并给我真正的路径。它们是否以相同的方式运行(仅关于解除引用,我知道stat会做更多的事情)?我应该更喜欢一个吗?

2 个答案:

答案 0 :(得分:15)

使用stat()告诉您任何符号链的末尾的文件;它不会以任何方式让你走上正轨。使用lstat() 获取有关所涉及的符号链接的信息(如果有);当给定的名称不是符号链接时,它就像stat()一样。使用readlink()获取存储在符号链接中的路径名称,该路径名称作为其参数(注意 - 它不会终止字符串)。

如果您希望符号链接末尾的文件的完整路径名,您可以使用 realpath()。这将为您提供绝对路径名,该路径名不会跨越任何符号链接以到达文件。

答案 1 :(得分:1)

是的,您应该使用readlink()。但是,请注意,它需要您分配一个缓冲区来存储取消引用的路径。lstat()可以帮助您,如果您想要分配一个所需的确切大小的缓冲区,如下面的示例所示readlink() man page