Android查看当前进程中的fd信息

先简单介绍一下FD的概念:
由于Android底层是Linux,所以Android拥有Linux很多特性,比如FD概念就是如此。FD是File Descriptor的简写,中文叫做:文件描述符。
当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个FD文件描述符。由于Linux系统中的一切皆为文件,所以FD在形式上是非负整数,它是一个索引值,指向内核为每个进程所维护的所有打开文件的记录表。
而Linux中每个进程可以打开的文件数量是有固定限制的,也就是说FD有上限,并不能无限制的打开文件。当某个进程的FD达到规定的数量时,再次打开文件时,就会崩溃。Android也有此限制,而Linux中FD一般是1024,而Android手机中这个值可能会有不同。所以我们有时候需要检测一下当前进程的FD信息,方法如下:

import android.system.Os;
import android.util.Log;
import java.io.File;

private void listFd() {
    File fdFile = new File("/proc/" + android.os.Process.myPid() + "/fd");
    File[] files = fdFile.listFiles(); // 列出当前目录下所有的文件
    int length = files.length; // 进程中的fd数量
    StringBuilder stb = new StringBuilder();
    for (int i = 0; i < length; i++) {
        try {
            String strFile = Os.readlink(files[i].getAbsolutePath()); // 得到软链接实际指向的文件
            stb.append(strFile + "\n");
        } catch (Exception x) {
            Log.e(TAG, "listFd error=" + x);
        }
    }
    Log.d(TAG, "listFd=" + stb);
}

猜你喜欢

转载自blog.csdn.net/chenzhengfeng/article/details/115013823