关于C fopen功能的问题

时间:2010-02-11 02:14:01

标签: c

当我阅读有关fopen函数的参考时,我发现FOPEN_MAX是“实现保证可以同时打开的最小流数”的值。

为什么它是最小数量的流?它不一定是“最大数量的流......”?

4 个答案:

答案 0 :(得分:10)

可以打开的最小流数=保证至少可以打开这么多

可以打开的最大流数=保证再打开肯定会失败

措辞意味着如果您打开的FOPEN_MAX流少于FOPEN_MAX,则可以保证至少还可以打开一个,并且系统不一定提供任何硬性最大值

答案 1 :(得分:3)

“MAX”是可以同时打开的最小数字,这听起来有点违反直觉。但是如果您正在编写可移植代码,那么这个数字就是您可以安全使用的有效最大

考虑以下代码:

if (num_open >= FOPEN_MIN) {
    // close some old ones
}
看起来很奇怪吧?所以称之为FOPEN_MAX是有道理的。

答案 2 :(得分:1)

我认为措辞不佳。最好只说实现保证至少FOPEN_MAX流可以同时打开。请注意,如果您尝试打开更多流,则可能会成功,但不能提前保证。

答案 3 :(得分:0)

在Linux上

,您可以调整允许的打开文件句柄的最大数量 有关更多信息,请参阅命令ulimit:

例如,在我的用户身上以我的用户身份运行的任何进程在任何给定时间都会打开最多256个文件句柄。

$ ulimit -n
256

有关更多信息,请参阅ulimit的手册页(这是一个Web版本):http://ss64.com/bash/ulimit.html

但是,我想你不能低于FOPEN_MAX