当我做vi时调用什么函数

问题描述:

当我从命令提示符执行vi文件名时,如果我使用fusexmp示例,会调用什么保险功能?我可以猜测mknod,打开被调用。 当我做一个写,即当我这样做:wq写入被调用。是对的吗。当我做vi时调用什么函数

+0

vi/vim是开源的。我建议你获取源代码并查看它。什么是保险丝功能? – octopusgrabbus 2012-04-13 00:00:42

+0

你可以通过使用dtrace,systemtap甚至oprofile(有内核支持)来查看自己。启动其中一个,然后使用vi,然后获得所有调用的报告! – 2012-04-13 00:03:16

+0

fusexmp自带的下载示例定义了一些函数。我的意思是指这些功能 – user1330431 2012-04-13 00:09:00

有没有飞驰简单的方法,看看哪些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)呼吁少一点傻傻的看着。