问题描述
所以我正在实现一个文件系统 FUSE。我想知道在调用函数时我位于哪个目录(特别是“mkdir”)。有办法知道吗?或者当用户使用“cd”命令时跟踪目录的方法? “getcwd”函数总是返回根目录。
解决方法
libfuse 守护进程以 root 身份运行,而不是在用户操作已挂载的文件系统的上下文中。这就是为什么您的熔断器代码中的 getcwd
总是返回根目录的原因。但是,您确实可以使用 fuse_get_context()->pid
(请参阅 linux how to intercept unauthorized process access to the file,base with FUSE( cryfs or gocryptfs ))
使用 PID,您可以通过在 readlink()
上调用 /proc/$pid/cwd
来获取用户的当前目录(参见 https://unix.stackexchange.com/questions/509420/get-working-directory-of-logged-in-users)