在编写高并发程序时 , 通常需要考虑系统限制的tcp并发连接数 。 而这个并发连接数 , 与程序的运行环境有关 , 因此最好是在运行过程中监听 。 方法如下:
#include <stdio.h>
#include <unistd.h>
int main () <{p>printf(\"max open file is %ld\\" sysconf(_SC_OPEN_MAX));
return 0;
核心函数是sysconf(_SC_OPEN_MAX) , 我们大概介绍下该函数:
需要添加头部unistd.h 。 大多数这些变量的值在调用进程的生存时间内不变 。
如果出错 , 那么函数返回-1 , 并适当地设置errno 。
当没有错误发生时 , -1也是一个合法的返回值 。
因此 , 程序要检查错误 , 应该在调用sysconf()之前将errno设置为0 , 然后 , 如果返回-1 , 则检验到错误 。
参数name指定我们感兴趣的运行时限制的名字 , 它必须是以下值中之一(除非另有说明 , 否则返回值都是整数):
_SC_2_C_BIND:一个布尔值 , 指出是否支持POSIXC语言绑定 。 返回值是_POSIX2_C_BIND 。
_SC_2_C_DEV:一个布尔值 , 指出是否支持POSIXC语言开发使用工具选项 。 返回值是_POSIX2_C_DEV 。
_SC_2_C_VERSION:它指出支持哪一个ISOPOSIX.2标准(命令)的版本 。 返回值是_POSIX2_C_VERSION 。
_SC_2_CHAR_TERM:一个布尔值 , 指出是否至少支持一个终端 。 返回值是_POSIX2_CHAR_TERM 。
_SC_2_FORT_DEV:一个布尔值 , 指出是否支持FORTRAN开发使用工具选项 。 返回值是POSIX2_FORT_DEV 。
注意:1、CLK_TCK的值是可变的 , 因此 , 不应该假设它是一个编译时间常量 。
2、调用setrlimit会使OPEN_MAX的值发生改变 。
【删除|程序获取最大并发连接的方法】3、通过将sysconf(_SC_PHYS_PAGES)和sysconf(_SC_PAGESIZE)相乘 , 来确定物理内存的总量(以字节为单位)可以返回一个值 。
- 亚马逊|亚马逊BUY BOX 是什么?如何获取黄金购物车?
- 删除|科技 Facebook放弃的人脸识别Meta还在用
- 小蘑菇|春节搞钱的年轻人:写祝福日入2700元,开发小程序每天躺赚几百
- risc|华为获取AMR V9授权面临困扰,中国该全力发展Risc-V了
- 本文转自:神鸟知讯观察怎么能获取暴利?估计这是困扰着大多数人的难题|合法的“暴利”行业?看似不起眼,市场规模却高达1.25万亿!
- wordpress|互联网知识获取如此方便的今天,印刷版的工具书还有存在价值吗?
- 程序员|特斯拉这是要做甚?modelπ手机无需SIM卡
- Apple Watch|程序员不知道自己的缺点,你怎么能改正?
- 飞利浦·斯塔克|Java培训:在Java应用程序中测试微服务
- 压岁钱|春节过年必备!收好这几个小程序让你春节更快乐