`
duyouhua1214
  • 浏览: 238182 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

sysconf()函数应用举例:查看CPU及内存信息

 
阅读更多
代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#include <stdio.h>
#include 
<unistd.h>

#define ONE_MB (1024 * 1024)

int main (void)
{
    
long num_procs;
    
long page_size;
    
long num_pages;
    
long free_pages;
    
long long  mem;
    
long long  free_mem;

    num_procs 
= sysconf (_SC_NPROCESSORS_CONF);
    printf (
"CPU 个数为: %ld 个\n", num_procs);

    page_size 
= sysconf (_SC_PAGESIZE);
    printf (
"系统页面的大小为: %ld K\n", page_size / 1024 );

    num_pages 
= sysconf (_SC_PHYS_PAGES);
    printf (
"系统中物理页数个数: %ld 个\n", num_pages);

    free_pages 
= sysconf (_SC_AVPHYS_PAGES);
    printf (
"系统中可用的页面个数为: %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 (
"总共有 %lld MB 的物理内存, 空闲的物理内存有: %lld MB\n", mem, free_mem);
    
return (0);
}

 

http://www.groad.net/bbs/read.php?tid-1487.html

 

http://www.groad.net/bbs/read.php?tid-1485.html

 

 

使用 sysconf() 函数确定可配置的系统变量的值。

原型是
引用
#include <unistd.h>
long sysconf (int name);


sysconf() 返回选项 (变量) 的当前值,这个值可配置的但也是受系统限制的。在成功完成的情况下,sysconf() 返回变量的当前值。该值受到的限制将少于编译时 <limits.h>, <unistd.h> 或 <time.h> 中可用的对应值。大多数这些变量的值在调用进程的生存时间内不变。

如果出错,那么函数返回 -1 ,并适当地设置 errno 。当没有错误发生时, -1 也是一个合法的返回值。因此,程序要检查错误,应该在调用 sysconf() 之前将 errno 设置为 0 ,然后,如果返回 -1,则检验到错误。

参数 name 指定我们感兴趣的运行时限制的名字,它必须是以值中之一(除非另有说明,否则返回值都是整数):

引用
_SC_2_C_BIND  :  一个布尔值,指出是否支持 POSIX C 语言绑定。返回值是 _POSIX2_C_BIND 。

_SC_2_C_DEV  :  一个布尔值,指出是否支持 POSIX C 语言开发使用工具选项。返回值是 _POSIX2_C_DEV 。

_SC_2_C_VERSION :  它指出支持哪一个 ISO POSIX.2 标准 (命令) 的版本。返回值是 _POSIX2_C_VERSION 。

_SC_2_CHAR_TERM :  一个布尔值,指出是否至少支持一个终端。返回值是 _POSIX2_CHAR_TERM 。

_SC_2_FORT_DEV  :  一个布尔值,指出是否支持 FORTRAN 开发使用工具选项。返回值是 POSIX2_FORT_DEV 。


... .... 待补充 ... ...

使用 sysconf() 函数时,必须注意

1、CLK_TCK 的值是可变的,因此,不应该假设它是一个编译时间常量。

2、调用 setrlimit 会使 OPEN_MAX 的值发生改变。

3、 通过将 sysconf (_SC_PHYS_PAGES) 和 sysconf (_SC_PAGESIZE) 相乘,来确定物理内存的总量 (以字节为单位) 可以返回一个值,该值超出 32 位进程中 long 或 unsigned long 可表示的最大值。同样适用于通过将 sysconf (_SC_PAGESIZE) 和 sysconf (_SC_AVPHYS_PAGES) 想乘,来确定未使用的物理内存的总量 (以字节为单位)。这个问题有两个工作区。第 1 个工作区将程序作为 64 位的进程进行编译 (从而使 long 足够大到可以容纳乘法运算的结果) ,但是,这样做的缺点是得到的程序只能在 64 位的内核中运行。第 2 个工作区是用来将得到的乘法运算结果存储在一个 64 位的量中,如 longlong_t  (Solaris OS 类型) 或 long long (linux)。它的有点是可以在 32 位和 64 位的内核中正确工作。


来源:http://www.cnblogs.com/leaven/archive/2011/01/14/1935181.html

分享到:
评论

相关推荐

    sysconf函数介绍

    sysconf函数的介绍文档

    linux unix 函数手册

    《Linux Unix 函数手册》是IT领域中一本非常重要的参考资料,尤其对于那些深入研究和开发Linux及Unix系统软件的工程师来说,它具有极高的参考价值。手册详细地介绍了Linux和Unix操作系统中的各种C语言编程接口,即...

    Linux 接口函数

    在Linux操作系统中,接口函数是系统提供给程序员用于与内核交互的重要工具。这些函数使得开发者能够执行各种操作,如文件I/O、进程控制、网络通信等。在C语言编程中,Linux接口函数通常通过标准C库(如glibc)或直接...

    《LinuxC 函数全集》

    10. **系统信息获取**:getpid, getppid获取进程ID,uname获取系统信息,sysconf获取系统配置,getrlimit获取资源限制等。 通过《Linux C 函数全集》这本书,开发者能够全面了解和掌握在Linux环境中使用C语言进行...

    RedHat Linux获取cpu占用率.docx

    使用`sysconf(_SC_NPROCESSORS_ONLN)`获取系统当前在线的CPU核心数,存储在变量`cpu_num`中。`_SC_NPROCESSORS_ONLN`是符号常量,用于查询系统配置信息。 4. `get_occupy`函数: 这个函数打开`/proc/stat`文件并...

    Linux CPU数量判断命令.pdf

    首先,我们可以使用C语言中的`sysconf`函数来获取系统CPU的数量。这个函数包含在`unistd.h`头文件中,调用`sysconf(_SC_NPROCESSORS_ONLN)`即可得到在线CPU的数量。`_SC_NPROCESSORS_ONLN`是一个预定义常量,代表的...

    Linux C函数集

    - `sysconf`:获取系统配置信息。 通过这个"Linux C函数集",开发者可以深入理解这些基本功能的用法,从而更好地在Linux环境下编写高效、可靠的程序。学习和熟练掌握这些函数是Linux系统编程的基础,也是成为一名...

    Linux函数祥解

    9. **系统信息获取**:如getpid获取进程ID,gettimeofday获取时间戳,sysconf获取系统配置信息等。 10. **权限和文件属性**:chmod改变文件权限,chown改变文件所有者,stat获取文件状态信息等。 通过阅读《LinuxC...

    Linux CPU数量判断命令.docx

    `sysconf`函数是C语言标准库提供的一种获取系统配置信息的接口,配合`_SC_NPROCESSORS_ONLN`常量可以用来查询当前系统上的在线处理器数量。这个命令在多核和超线程系统中尤其有用,因为它能够区分物理核心和逻辑核心...

    linuxC函数参考集合

    11. **系统信息获取**:getpid、getppid、getuid、getgid等获取进程和用户ID,sysconf获取系统配置信息。 12. **标准I/O流**:标准输入输出流(stdin, stdout, stderr),以及fopen、fclose、fprintf等用于处理。 ...

    LinuxCPU数量判断命令.pdf

    这里的关键在于调用`sysconf`函数,它是一个系统配置函数,可以提供有关系统的各种信息。当传递参数 `_SC_NPROCESSORS_ONLN` 给 `sysconf` 函数时,它会返回在线CPU的数量。 ```c #include long num = sysconf(_...

    Linux C 函数手册.rar

    - `sysconf`获取系统配置信息,如最大打开文件描述符数,最大线程数等。 - `getpid`,`getppid`分别获取当前进程ID和父进程ID。 这本Linux C函数手册对于开发者来说是一份宝贵的资源,它详尽地解释了这些函数的...

    cpu-clock-ticks:纯javascript实现以获取`sysconf(_SC_CLK_TCK))`值

    获取sysconf(_SC_CLK_TCK))值的纯 javascript 实现 示例代码 var cct = require ( 'cpu-clock-ticks' ) ; console . log ( 'Clock ticks for CPU is %d HZ' , cct ( ) ) ; 通常它会是 100HZ。 灵感 局限性 仅适用...

    Linux C 函数详解

    9. **系统信息**:`getpid()`、`getppid()` 获取进程ID,`gettimeofday()` 获取时间戳,`sysconf()` 获取系统配置信息。 10. **网络编程**:`socket()`、`bind()`、`listen()`、`accept()`、`connect()`、`send()`...

    eq.rar_return

    在Posix系统中,`sysconf()`可以用来获取诸如最大打开文件描述符数量、线程限制、内存分配限制等信息。返回值-1通常意味着请求的配置项不在系统支持的范围内,或者系统不提供该功能。而错误码ENOSYS是内核告诉用户...

    Linux C 函数全集

    `sysconf` 和 `getconf` 可以获取系统配置信息,`time` 和 `ctime` 处理时间相关的操作。 在进程控制方面,`fork` 创建子进程,`exec` 家族(如 `execl`, `execlp`, `execle`, `execv`, `execvp`, `execve`)用于...

    Linux C库函数 htm格式

    除了上述常见的C库函数,Linux还提供了许多特定于系统的函数,例如与系统调用交互的`syscall`,以及访问系统信息的`sysconf`和`uname`等。 在学习和使用这些函数时,查阅在线文档如...

    jni.rar_压力测试_测试cpu

    同时,还可以通过JNI调用特定的系统调用来直接测量CPU的使用情况,如通过`sysconf()`或`getrusage()`函数获取CPU时间。 3、**参数观察模块**: 在测试过程中,持续监控和记录CPU的使用率是必要的。JNI可以用来动态...

    aix命令详解.rar

    - `top`: 动态显示实时的系统资源使用情况,包括CPU、内存和进程状态。 - `kill`: 发送信号给进程,如 `kill -9` 杀死进程。 - `bg` 和 `fg`: 将后台任务放到前台或从前台移到后台运行。 4. **网络与系统管理...

    linux 命令简表

    - `top` 查看CPU、内存等资源的实时使用情况。 17. **mesg**:控制是否接收写入消息。例如: - `mesg y` 开启接收其他用户的消息。 - `mesg n` 关闭接收其他用户的消息。 18. **write**:向其他用户发送消息。...

Global site tag (gtag.js) - Google Analytics