我有一个从/tmp/test运行的程序a.out。如果我列出,它是/tmp/test的符号链接。/proc/$(pgrep a.out)/cwd
现在,我将/mnt/othertest绑定到/tmp/test上mount -o bind /mnt/othertest /tmp/test
。因此,这个新的挂载被堆叠起来,而旧的/tmp/test被隐藏了。
尽管如此,由于a.out在 mount 命令之前启动,它可以访问旧路径。
我要解决的问题是如何知道cwd设置为/tmp/test的进程是否引用/mnt/othertest中的目录。
对于打开的文件,这很容易,我可以使用proc pseudo -filesyste 中的fdinfo并读取挂载 ID,但我没有找到cwd的此类信息。我可以检查进程的开始时间并将其与 mount 启动的时间进行比较,但由于可能存在分叉,它可能是错误的。