【发布时间】:2012-07-06 11:23:47
【问题描述】:
目前我正在开发一个 android 应用程序,其中我在 sdcard 上有一个文件,我必须找出所有正在访问该文件的进程的进程 ID。
使用 android.os.FileObserver 我们只能知道文件是否被任何进程访问。但是如何获取该进程的进程ID?
【问题讨论】:
目前我正在开发一个 android 应用程序,其中我在 sdcard 上有一个文件,我必须找出所有正在访问该文件的进程的进程 ID。
使用 android.os.FileObserver 我们只能知道文件是否被任何进程访问。但是如何获取该进程的进程ID?
【问题讨论】:
我认为通过 Android SDK 是不可能的。
您可能正在寻找的是lsof(系统)命令。不幸的是,它在 Android 4.0 下的大多数股票 ROM 上不可用。根据similar question 下的评论,ICS 有一个补丁来添加基本的lsof 支持。我有运行 4.0.3 的 Galaxy Nexus,我看到我的手机上有 lsof 命令。您也可以安装 BusyBox 来安装lsof(或要求您的应用程序的用户安装它)。
假设您的手机上有lsof,您可以解析输出运行命令:
Runtime.getRuntime().exec(new String[] { "lsof", pathToInterestingFile});
【讨论】: