如何查看一个文件被哪个进程打开(占用)呢?
在之前的介绍http://blog.csdn.net/aaajj/article/details/51854015里,讲解了killProcessesWithOpenFiles的实现流程。
这里我们再回顾下找的过程。
在Android(Linux)系统中,/proc里面有进程的相关信息,
比如有123, 124,125这样的以进程号命名的文件,
这样的文件里,又有一个名为fd的目录,里面存放的是该进程打开的文件的记录,采用链接文件来表示的,如
lr-x------ root root 2015-05-02 14:30 199 ->/mnt/asec/com.netease.newsreader.activity-2/base.apk
文件名199,表示打开的/mnt/asec/com.netease.newsreader.activity-2/base.apk的文件描述符fd是199
了解了这些后,就能够理解如何查找文件被哪个进程打开了。
遍历/proc目录下的所有进程文件(文件名为数字形式的),查看里面fd路径下的链接文件是否有要查找的文件即可。
这种方法是通过系统级方法,在所有打开的文件中进行查找,来查看是哪个进程打开的给定文件。