打开文件的数量限制是多少?

LJ *_*erd 2 windows windows-10

Windows 10 中当前打开文件数的限制是多少?在 DOS 中,数字是 15。

phu*_*clv 5

理论上,在 64 位 Windows 中,进程可以打开的最大句柄数是 2 32,因为句柄有 32 个有效位。然而,实际上它被限制为每个进程16 777 216 (2 24 )。在 32 位 Windows 上,限制可能是 2 16

为了支持 16 位程序,32 位 Windows 仅生成具有 16 位有效位的句柄——操作系统忽略高 16 位(即使程序不会利用这一事实)。所以没有一个程序可以与超过 2 16 个对象进行交互,这实际上是相当低的。

但是,为了改进这一点,64 位 Windows 将句柄中的有效位数量增加到 32。但是现在这意味着句柄不能在不丢失信息的情况下传递给 16 位程序。因此 16 位程序无法在 64 位 Windows 上运行。

为什么 64 位操作系统不能运行 16 位应用程序?

但是,对于使用默认 C 运行时库的单个进程,则默认限制为 512

C 运行时库对可以在任何时间打开的文件数有 512 个限制。尝试打开超过最大数量的文件描述符或文件流会导致程序失败。使用_setmaxstdio更改此数。

文件处理

不清楚 Windows 中所有进程的最大文件句柄总数

对于网络连接,每个会话的最大打开文件数为 16 384。这可以使用net config server命令进行检查

进一步阅读

在任务管理器中可以很容易地看到当前的文件句柄使用情况

任务管理器打开句柄

请注意,在 DOS 中,数字可以根据 config.sys 中的设置进行更改,而不是固定为 15

  • 文件(DOS 2.0 和 DR DOS 3.31 及更高版本;OS/2)
    • 指定一次可以打开的文件数。
  • FILESHIGH仅限MS-DOS 7.0 和 DR-DOS 7.02 及更高版本[6] 和 FreeDOS)
    • 与 FILES 相同,但将文件句柄显式加载到高端内存中。

https://en.wikipedia.org/wiki/CONFIG.SYS#CONFIG.SYS_directives