#include <unistd.h>
#include <stdio.h>
#define ONE_MB (1024*1024)
/*
_SC_NPROCESSORS_CONF CPU 数量
_SC_PAGESIZE 系统页面的大小
_SC_PHYS_PAGES 系统中物理页数个数
_SC_AVPHYS_PAGES 系统中可用的页面个数
_SC_OPEN_MAX 每个进程间的最大打开文件数
_SC_ARG_MAX exec函数的参数最大长度(字节数)
_SC_ATEXIT_MAX 可用atexit函数登记的最大函数个数
_SC_LINE_MAX 实用程序输入行的最大长度.
*/
int main(void)
{
long num_procs;
long page_size;
long num_pages;
long free_pages;
long long mem;
long long free_mem;
long openCount = 0;
num_procs = sysconf(_SC_NPROCESSORS_CONF);
printf("CPU count:%ld\n", num_procs);
page_size = sysconf(_SC_PAGESIZE);
printf("system page size: %ld K\n", page_size/1024);
num_pages = sysconf(_SC_PHYS_PAGES);
printf("page num:%ld\n", num_pages);
free_pages = sysconf(_SC_AVPHYS_PAGES);
printf("system has availd page:%ld\n", free_pages);
mem = (long long)((long long)num_pages*(long long)page_size);
mem /= ONE_MB;
free_mem = (long long)free_pages*(long long)page_size;
free_mem /= ONE_MB;
printf("has %lld MB mem, free mem:%lld MB\n", mem, free_mem);
openCount = sysconf(_SC_OPEN_MAX);
printf("open count=%ld\n", openCount);
return 0;
}