コマンド プロンプトから vi ファイル名を実行すると、fusexmp の例を使用している場合、どのヒューズ関数が呼び出されますか? mknod、open が呼び出されていると推測できます。書き込みを行うと、つまり :wq 書き込みが呼び出されます。そうですか。
1 に答える
3
特定のファイル操作に対してどの FUSE 関数が呼び出されているかを簡単に確認する方法はありませんが、実行するとシステム コールstrace(1)
が記録されます。これは FUSE 関数に非常に近いものです。
$ strace -o /tmp/vim.all vim /etc/motd
これらのシステム コールの多くは、特定の 1 つのファイルに関連しているのではなく、ロードのプロセス、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 に答える