【发布时间】:2018-07-19 11:16:03
【问题描述】:
是否可以在 C++ 中可移植地访问可以在当前进程中同时打开的最大文件数(例如,在 unix 系统上 ulimit -n 的结果)?我正在用 C++ 编写一个应用程序,它可能需要数百个打开的文件,通常超过系统默认的最大值。超过最大打开文件限制通常会导致难以诊断崩溃,尤其是在大多数用户不知道该限制的情况下。如果我知道启动时的限制,我可能会警告用户潜在的问题,或者在出现问题时提供更好的错误消息。
【问题讨论】:
-
根据目标操作系统定义“便携”。
-
至少 Linux、OS X 和 Windows。
-
有
sysconf(_SC_OPEN_MAX).. -
POSIX
getrlimit(RLIMIT_NOFILE) -
#include <stdio.h>并使用宏FOPEN_MAX。