微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

便携式等同于OPEN_MAX

nftw一个文件句柄的使用参数,似乎没有办法说'尽可能多'。 指定255似乎在Linux上工作,但在BSD上失败。 显然OPEN_MAX是BSD推荐的解决scheme,但是我不能使用它,因为它在Linux上不起作用。

是否有一个可在Linux和BSD上使用的便携式OPEN_MAX?

或者,是否有一个便携式号码,一些足够大的数字不会减慢速度,这对实际用途来说是便携式的(理想情况下在POSIX中指定,或者至less可以在每个类似Unix的系统上有很大的市场份额)。

你将如何build立一个数据库文件系统(DBFS)?

非阻塞访问文件系统

在〜8MB缓冲区(OSX,Linux)的write()

开发没有信息的驱动程序

获取核心数(*不* HT线程)

如何使用sys / queue.h中的列表?

为什么Mono在Linux和BSD上运行速度降低了1/3?

如何计算一个词出现在使用shell的文件中的时间?

使用内存映射复制文件

在哪里可以findLinux版本的sys / queue.h头文件

Unix环境下的高级编程,第二版给了我们下面的代码,它应该在任何地方工作; 虽然它非常聪明,但我认为这有点不幸,它也不检查流程的限制,因为rlimits可以进一步限制一个进程可能使用多少个打开的文件。 除此之外,这里是来自主的代码

#ifdef OPEN_MAX static long openmax = OPEN_MAX; #else static long openmax = 0; #endif /* * If OPEN_MAX is indeterminate,we're not * guaranteed that this is adequate. */ #define OPEN_MAX_GUESS 256 long open_max(void) { if (openmax == 0) { /* first time through */ errno = 0; if ((openmax = sysconf(_SC_OPEN_MAX)) < 0) { if (errno == 0) openmax = OPEN_MAX_GUESS; /* it's indeterminate */ else err_sys("sysconf error for _SC_OPEN_MAX"); } } return(openmax); }

( err_sys()在apue.h头文件中提供,并且源代码应该很容易代码替换你的例程。)

请参阅getdtablesize 。 它有一个符合性说明:

SVR4,4.4BSD(getdtablesize()函数首次出现在4.2BSD中)。 在POSIX.1-2001中没有规定; 便携式应用程序应该使用sysconf(_SC_OPEN_MAX)来代替这个调用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐