当我做vi时调用什么函数

时间:2012-04-12 23:57:35

标签: vim filesystems fuse

当我从命令提示符处执行vi文件名时,如果我使用fusexmp示例,会调用哪些保险丝函数?我可以猜到mknod,打开叫。 当我写一个写时,即当我这样做:wq write被调用。是对的吗。

1 个答案:

答案 0 :(得分: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)调用看起来不那么傻了。