strace 报告不正确的相对路径?

strace 报告不正确的相对路径?

我正在使用strace报告openchdir系统调用,其输出的一部分是:

6791  chdir("//etc")                    = 0
6791  open("etc/fstab", O_RDONLY)       = 3

这没有意义。首先我们进入目录/etc,然后相同的进程尝试从那里打开相关文件etc/fstab。调用成功,但没有这样的文件/etc/etc/fstab。只有文件/etc/fstab

为什么 strace 的报告etc/fstab/etc/fstab应该报告的不同?

答案1

嗯……显然 POSIX 允许在路径名中使用双斜杠。它的意思不是人们所想的根目录,而是依赖于实现的。我猜在这种情况下//etc实际上与 相同/。我知道这很疯狂,但这是我能想到的唯一办法。

相关内容