我正在使用strace
报告open
和chdir
系统调用,其输出的一部分是:
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
实际上与 相同/
。我知道这很疯狂,但这是我能想到的唯一办法。