你可以strace一次vi的打开关闭过程以追踪close调用
close()调用是文件操作,请读/kernel/fs, 与/kernel/proc没大关系。
文件打开记录怎么能释放掉呢?读又不互斥、明显是读引用数-1而已。File是能被多个进程共享的,你不用别人还要呢。引用数减到0了也只是换入冷链参与LRU调度机制,冷链溢出了才会真的释放。
系统调用close() 会通过 vfs 调用底层 xxx_close()执行这个函数里面的内容,一般就是释放占用的资源
你可以找个内核代码看看就明白了