我正在尝试弄清楚如何使用 C++ 确定目录是否为符号链接(symbolic link)
使用 lstat 和 S_ISLNK(fs.st_mode) 可以很容易地确定文件是否是符号链接(symbolic link),但这似乎只适用于文件。 S_ISDIR 总是说目录就是目录,即使它实际上是指向目录的符号链接(symbolic link)。
那么,如何对目录执行与文件相同的操作?
最佳答案
实际的区别更加微妙。如果您 lstat("/path/link/")
它将“查看”由于尾部斜杠的符号链接(symbolic link)。如果您执行 lstat("/path/link")
(请注意没有尾部斜杠),您的代码应该可以工作。您可以在这个 Python 示例中看到(即使不知道数字的含义,您也可以看到结果发生变化):
$ ln -s /etc /tmp/foo
>>> from posix import lstat
>>> lstat("/tmp/foo")
(41471, 24591, 64769L, 1, 1095, 501, 4, 1298667395, 1298667395, 1298667395)
>>> lstat("/tmp/foo/")
(16877, 131073, 64768L, 119, 0, 0, 12288, 1298663835, 1298667375, 1298667375)
关于c++ - 在linux/unix下,如何使用c++发现一个目录是否是一个链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5122424/