当我从命令提示符处执行 vi 文件名时,如果我使用 fusexmp 示例,会调用哪些 fuse 函数?我可以猜到 mknod,open 都被调用了。当我做一个写时,即当我做时:wq write 被调用。那正确吗。
问问题
208 次
1 回答
3
没有非常简单的方法可以查看任何给定文件操作调用了哪些 FUSE 函数,但是运行strace(1)
会记录系统调用,这与 FUSE 函数非常接近:
$ strace -o /tmp/vim.all vim /etc/motd
许多这些系统调用与一个文件无关,而是与加载过程vim
、其动态链接库、您的本地配置及其所有支持文件相关。
以下是一些选定的行,它们引用了/etc/motd
我打开的行:
stat("/etc/motd", {st_mode=S_IFREG|0644, st_size=183, ...}) = 0
stat("/etc/motd", {st_mode=S_IFREG|0644, st_size=183, ...}) = 0
stat("/etc/motd", {st_mode=S_IFREG|0644, st_size=183, ...}) = 0
stat("/etc/motd", {st_mode=S_IFREG|0644, st_size=183, ...}) = 0
access("/etc/motd", W_OK) = -1 EACCES (Permission denied)
open("/etc/motd", O_RDONLY) = 7
close(7) = 0
open("/etc/motd", O_RDONLY) = 7
read(7, "Welcome to Ubuntu 11.04 (GNU/Lin"..., 8192) = 183
read(7, "", 65536) = 0
close(7) = 0
stat("/etc/motd", {st_mode=S_IFREG|0644, st_size=183, ...}) = 0
中间的线条使重复的stat(2)
调用看起来不那么愚蠢。
于 2012-04-13T00:10:49.660 回答