在linux/unix下,如何发现目录是否是使用c ++的链接?

Tim*_*ine 3 c++ linux filesystems

我试图弄清楚如何使用c ++找出目录是否是符号链接

使用lstat和S_ISLNK(fs.st_mode)确定文件是否是符号链接很容易,但这似乎只适用于文件.S_ISDIR总是说目录是一个目录,即使它实际上是一个指向目录的符号链接.

那么,如何将目录作为文件执行相同的操作?

Ben*_*son 7

实际的区别更为微妙.如果你lstat("/path/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)
Run Code Online (Sandbox Code Playgroud)