理论上,在 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 上运行。
但是,对于使用默认 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
| 归档时间: |
|
| 查看次数: |
11688 次 |
| 最近记录: |