9

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

4

2 回答 2

19

用于stat()告诉您任何符号链接链末尾的文件;它不会以任何方式为您提供路径。用于lstat() 获取有关所引用的符号链接(如果有)的信息;它的行为就像stat()给定的名称不是符号链接一样。用于readlink()获取存储在符号链接中的路径名,命名为它的参数(注意——它不会终止字符串)。

如果您想要在符号链接末尾的文件的完整路径名,您可以使用 realpath(). 这为您提供了一个绝对路径名,它不会跨越任何符号链接来访问文件。

于 2013-08-10T07:35:03.597 回答
2

是的,你应该使用readlink()它。但是,请注意,它要求您分配一个缓冲区来存储取消引用的路径。如果您想分配一个所需大小的缓冲区,这会有所帮助,如手册页lstat()底部的示例所示。readlink()

于 2013-08-10T07:37:00.273 回答