代码之家  ›  专栏  ›  技术社区  ›  Didac Perez Parera

使用Windows API检索打开的文件描述符的数量

  •  4
  • Didac Perez Parera  · 技术社区  · 11 年前

    我想知道我在C++应用程序中打开了多少文件描述符。可以使用Windows API函数完成此操作吗?

    2 回复  |  直到 11 年前
        1
  •  4
  •   sm3    11 年前

    您可以使用询问过程中的每个句柄 GetFileType .

          DWORD type_char = 0, 
          type_disk = 0, 
          type_pipe = 0, 
          type_remote = 0, 
          type_unknown = 0,
          handles_count = 0;
    
    GetProcessHandleCount(GetCurrentProcess(), &handles_count);
    handles_count *= 4;
    for (DWORD handle = 0x4; handle < handles_count; handle += 4) {
        switch (GetFileType((HANDLE)handle)){
            case FILE_TYPE_CHAR:
                type_char++;
                break;
            case FILE_TYPE_DISK:
                type_disk++;
                break;
            case FILE_TYPE_PIPE: 
                type_pipe++;
                break;
            case FILE_TYPE_REMOTE: 
                type_remote++;
                break;
            case FILE_TYPE_UNKNOWN:
                if (GetLastError() == NO_ERROR) type_unknown++;
                break;
    
        }
    
    }
    
        2
  •  0
  •   piokuc    11 年前

    如果您在检查打开的手柄后,则可以 Handle 来自的实用程序 SysInternals .