Sti*_*lez 5 freebsd mount stat cwd bind-mount
在 FreeBSD 中,man mount_nullfs声明:
该文件系统的虚拟副本和符号链接之间的主要区别是,在
getcwd(3)功能正常工作在虚拟拷贝,而其他文件系统可以被安装在所述虚拟副本而不影响原始。虚拟副本的不同设备号由 返回stat(2),但在其他方面它与原始设备号没有区别。
本段的全部含义/含义是什么?
文件系统的虚拟副本和符号链接之间的主要区别是,在
getcwd(3)功能正常工作在虚拟拷贝,
getcwd符号链接目录的行为是一个众所周知的问题,例如在Advanced Unix Programming中记录(请参阅此 SO 问题以获取报价):chdir并且getcwd在涉及符号链接时不对称。人们可能期望将目录 using 更改chdir为给定目录,然后检索当前目录 usinggetcwd将返回相同的值;但是当进程使用包含符号链接的路径更改目录时,情况并非如此——getcwd返回在取消引用所有符号链接后获得的路径。当包含符号链接的路径和取消引用的路径具有不同数量的组件时,将目录更改为父目录时,这可能会产生意想不到的后果。
并且可以在不影响原始副本的情况下将其他文件系统挂载到虚拟副本上。
继续 Stéphane 的示例,您可以在 的子目录上挂载另一个文件系统而/tmp/b不会影响/some/dir,而在 的子目录上挂载文件系统/tmp/a也会使其显示在 下/some/dir。
虚拟副本的不同设备号由 返回
stat(2),但在其他方面它与原始设备号没有区别。
这意味着stat在副本或其下的任何文件上运行将返回与原始设备不同的设备编号,但这是唯一的区别;除此之外,stat("/tmp/b/c", &buf)并且stat("/some/dir/c", &buf)将返回相同的信息。