在Linux中,如果您有一个知道符号链接的文件的路径,那么如何以编程方式确定(在C或C ++中)它指向的文件的路径?
答案 0 :(得分:8)
readlink
功能。做man 2 readlink
。这个函数是Posix API的一部分,因此几乎可以在任何Unix上运行。
如果路径以'/'
开头,那么它是一个绝对的符号链接,你有它所引用的文件的完整绝对路径(这可能是另一个符号链接,你必须重复再过程。)
如果路径不以“/
”开头,则它是相对链接,并相对于符号链接所在的目录进行解释。由您自行组合路径以确定实际文件名
当然,有时候符号链接用于存储实际上不是路径的信息。有时程序会在其中存储PID或其他此类信息以用于锁定目的。创建符号链接的调用是可以在NFS安装的文件系统上执行的更可靠的原子操作之一。
另外,在我的Fedora系统上,如果你做man 7 symlink
,你会长时间讨论符号链接,它们在各种情况下的行为以及操纵它们或受它们影响的函数的概述。
答案 1 :(得分:5)
在POSIX或BSD系统上使用readlink()