假设我想获取符号链接的真实路径。我知道系统调用readlink
和stat
系统调用都可以取消引用链接并给我它的真实路径。它们是否以相同的方式操作(仅关于取消引用,我知道它stat
会做更多)?我应该更喜欢一个吗?
问问题
17778 次
2 回答
19
用于stat()
告诉您任何符号链接链末尾的文件;它不会以任何方式为您提供路径。用于lstat()
获取有关所引用的符号链接(如果有)的信息;它的行为就像stat()
给定的名称不是符号链接一样。用于readlink()
获取存储在符号链接中的路径名,命名为它的参数(注意——它不会终止字符串)。
如果您想要在符号链接末尾的文件的完整路径名,您可以使用
realpath()
. 这为您提供了一个绝对路径名,它不会跨越任何符号链接来访问文件。
于 2013-08-10T07:35:03.597 回答
2
是的,你应该使用readlink()
它。但是,请注意,它要求您分配一个缓冲区来存储取消引用的路径。如果您想分配一个所需大小的缓冲区,这会有所帮助,如手册页lstat()
底部的示例所示。readlink()
于 2013-08-10T07:37:00.273 回答