- 浏览: 236222 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wahahachuang8:
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的 ...
服务器推送技术 java -
mahuanjian:
[flash=200,200][/flash]
服务器推送技术 java -
wenjundiandian:
下面有网页编辑器的话还是会被隐藏.
ext中消息框、提示框、确认框显示在最前面的解决方法 -
天塔上的猫:
/**
* JAVA常见的权限控制算法的实现
*
* ...
JAVA常见的权限控制算法的实现
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);
}
#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() 函数确定可配置的系统变量的值。
原型是:
sysconf() 返回选项 (变量) 的当前值,这个值可配置的但也是受系统限制的。在成功完成的情况下,sysconf() 返回变量的当前值。该值受到的限制将少于编译时 <limits.h>, <unistd.h> 或 <time.h> 中可用的对应值。大多数这些变量的值在调用进程的生存时间内不变。
如果出错,那么函数返回 -1 ,并适当地设置 errno 。当没有错误发生时, -1 也是一个合法的返回值。因此,程序要检查错误,应该在调用 sysconf() 之前将 errno 设置为 0 ,然后,如果返回 -1,则检验到错误。
参数 name 指定我们感兴趣的运行时限制的名字,它必须是以值中之一(除非另有说明,否则返回值都是整数):
... .... 待补充 ... ...
使用 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 位的内核中正确工作。
原型是:
引用#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
发表评论
-
Linux下获取IP、MAC、网关、掩码的shell脚本
2012-07-05 13:45 1924Mask:ifconfig |grep inet| sed - ... -
输入法
2012-01-04 18:00 0http://civilnet.cn/syszux/syszu ... -
tar压缩解压
2012-01-01 11:04 1049tar -c: 建立压缩档案-x ... -
Linux GUI 技术网
2012-01-01 10:32 730http://www.linuxgraphics.cn/hom ... -
Linux常用命令大全
2012-01-01 10:27 649http://www.emlinix.com/linux-zh ... -
嵌入式Linux应用程序自动载入驱动模块方法
2012-01-01 10:22 1294英利公司推出的嵌入式L ... -
MP4音频解码信息
2011-12-31 11:48 0http://blog.chinaunix.net/space ... -
ffmpeg库音频解码示例
2011-12-31 11:45 0一个英文版的例子(有讲解)ffmpeg的一些使用例子mpeg ... -
基于Bootloader的可靠嵌入式软件远程更新机制
2011-12-31 11:42 0嵌入式软件的远程自动 ... -
Double转STRING
2011-12-31 11:40 0double x=1.23456789; ch ... -
linux下检测网卡与网线连通状态
2011-12-31 11:32 0Linux下检测网卡与网线连接状态,使用ioctl向socke ... -
去除10分钟左右自动关闭LCD显示
2012-01-04 09:50 552注释掉drivers\char\vt.c的blank_scre ... -
linux logo 左上角有黑块解决办法
2012-01-04 09:50 942http://www.unixresources.net/li ... -
linux下gprs ppp 拨号的注意事项
2011-12-31 11:21 0折腾了几天,终于在linux下拨号成功了! 注意事项: 1 ... -
GPRS模块在Linux平台上ppp拨号上网总结与心得
2011-12-31 11:09 0由于一个嵌入式平台 ... -
Linux下检测U盘是否插入
2011-12-31 11:07 0Linux下检测U盘是否插入Linux的文件系统是异步的,也就 ... -
Linux下应用程序如何取得U盘插拔消息
2011-12-31 11:06 0Linux 2.6内核版本以后,对于/dev目录的管理采用了新 ... -
在嵌入式Linux下GPRS上网方案
2011-12-31 11:02 0在嵌入式Linux下GPRS上网方案 硬/软件环境 ... -
FFMpeg框架代码阅读
2011-12-31 10:50 01. 简介FFmpeg是一个集录制、转换、音/视频编码解码 ... -
关于ffmpeg的安装及其编译
2011-12-31 10:48 0所需软件包:nasm-0.98.39-1.i386.r ...
相关推荐
sysconf函数的介绍文档
《Linux Unix 函数手册》是IT领域中一本非常重要的参考资料,尤其对于那些深入研究和开发Linux及Unix系统软件的工程师来说,它具有极高的参考价值。手册详细地介绍了Linux和Unix操作系统中的各种C语言编程接口,即...
在Linux操作系统中,接口函数是系统提供给程序员用于与内核交互的重要工具。这些函数使得开发者能够执行各种操作,如文件I/O、进程控制、网络通信等。在C语言编程中,Linux接口函数通常通过标准C库(如glibc)或直接...
10. **系统信息获取**:getpid, getppid获取进程ID,uname获取系统信息,sysconf获取系统配置,getrlimit获取资源限制等。 通过《Linux C 函数全集》这本书,开发者能够全面了解和掌握在Linux环境中使用C语言进行...
首先,我们可以使用C语言中的`sysconf`函数来获取系统CPU的数量。这个函数包含在`unistd.h`头文件中,调用`sysconf(_SC_NPROCESSORS_ONLN)`即可得到在线CPU的数量。`_SC_NPROCESSORS_ONLN`是一个预定义常量,代表的...
- `sysconf`:获取系统配置信息。 通过这个"Linux C函数集",开发者可以深入理解这些基本功能的用法,从而更好地在Linux环境下编写高效、可靠的程序。学习和熟练掌握这些函数是Linux系统编程的基础,也是成为一名...
9. **系统信息获取**:如getpid获取进程ID,gettimeofday获取时间戳,sysconf获取系统配置信息等。 10. **权限和文件属性**:chmod改变文件权限,chown改变文件所有者,stat获取文件状态信息等。 通过阅读《LinuxC...
`sysconf`函数是C语言标准库提供的一种获取系统配置信息的接口,配合`_SC_NPROCESSORS_ONLN`常量可以用来查询当前系统上的在线处理器数量。这个命令在多核和超线程系统中尤其有用,因为它能够区分物理核心和逻辑核心...
使用`sysconf(_SC_NPROCESSORS_ONLN)`获取系统当前在线的CPU核心数,存储在变量`cpu_num`中。`_SC_NPROCESSORS_ONLN`是符号常量,用于查询系统配置信息。 4. `get_occupy`函数: 这个函数打开`/proc/stat`文件并...
11. **系统信息获取**:getpid、getppid、getuid、getgid等获取进程和用户ID,sysconf获取系统配置信息。 12. **标准I/O流**:标准输入输出流(stdin, stdout, stderr),以及fopen、fclose、fprintf等用于处理。 ...
这里的关键在于调用`sysconf`函数,它是一个系统配置函数,可以提供有关系统的各种信息。当传递参数 `_SC_NPROCESSORS_ONLN` 给 `sysconf` 函数时,它会返回在线CPU的数量。 ```c #include long num = sysconf(_...
- `sysconf`获取系统配置信息,如最大打开文件描述符数,最大线程数等。 - `getpid`,`getppid`分别获取当前进程ID和父进程ID。 这本Linux C函数手册对于开发者来说是一份宝贵的资源,它详尽地解释了这些函数的...
获取sysconf(_SC_CLK_TCK))值的纯 javascript 实现 示例代码 var cct = require ( 'cpu-clock-ticks' ) ; console . log ( 'Clock ticks for CPU is %d HZ' , cct ( ) ) ; 通常它会是 100HZ。 灵感 局限性 仅适用...
9. **系统信息**:`getpid()`、`getppid()` 获取进程ID,`gettimeofday()` 获取时间戳,`sysconf()` 获取系统配置信息。 10. **网络编程**:`socket()`、`bind()`、`listen()`、`accept()`、`connect()`、`send()`...
在Posix系统中,`sysconf()`可以用来获取诸如最大打开文件描述符数量、线程限制、内存分配限制等信息。返回值-1通常意味着请求的配置项不在系统支持的范围内,或者系统不提供该功能。而错误码ENOSYS是内核告诉用户...
`sysconf` 和 `getconf` 可以获取系统配置信息,`time` 和 `ctime` 处理时间相关的操作。 在进程控制方面,`fork` 创建子进程,`exec` 家族(如 `execl`, `execlp`, `execle`, `execv`, `execvp`, `execve`)用于...
除了上述常见的C库函数,Linux还提供了许多特定于系统的函数,例如与系统调用交互的`syscall`,以及访问系统信息的`sysconf`和`uname`等。 在学习和使用这些函数时,查阅在线文档如...
同时,还可以通过JNI调用特定的系统调用来直接测量CPU的使用情况,如通过`sysconf()`或`getrusage()`函数获取CPU时间。 3、**参数观察模块**: 在测试过程中,持续监控和记录CPU的使用率是必要的。JNI可以用来动态...
- `top`: 动态显示实时的系统资源使用情况,包括CPU、内存和进程状态。 - `kill`: 发送信号给进程,如 `kill -9` 杀死进程。 - `bg` 和 `fg`: 将后台任务放到前台或从前台移到后台运行。 4. **网络与系统管理...