linux初探

首页

应用服务器

Linux技巧

中文文档

Linux初级

服务器源代码

命令详解

Linux技术应用

Linux安全应用

Linux业界新闻

UniX技术文章

Linux编程与内核

Linux数据库

Linux服务器

Linux安装指导

Linux论坛

首页>>UniX技术文章>>文章正文

freebsd下计算cpu、memory、hd等相信的代码

/*
* FreeBSD CPU Information 0.1
* ---------------------------
* Simple program to display the total RAM, and CPU information.
* Compile: cc -o cpuinfo cpuinfo.c
* ---------------------------
*/

#include
#include
#include
#include
#include
#include

extern int errno;

int main(void)
{
int len, numcpu, cpuspeed, totalmem, usermem;
char cpuarch[64], cpumodel[64];

printf("FreeBSD CPU Information\n");
printf("Version 0.1\n");

len = sizeof(cpuarch);
if (sysctlbyname("hw.machine_arch", &cpuarch, &len, NULL, NULL) == -1)
{
perror("sysctlbyname()");
return -1;
}

len = sizeof(cpumodel);
if (sysctlbyname("hw.model", &cpumodel, &len, NULL, NULL) == -1) {
perror("sysctlbyname()");
return -1;
}

len = sizeof(cpuspeed);
if (sysctlbyname("machdep.tsc_freq", &cpuspeed, &len, NULL, NULL) ==
-1) {
perror("sysctlbyname()");
return -1;
}

len = sizeof(numcpu);
if (sysctlbyname("hw.ncpu", &numcpu, &len, NULL, NULL) == -1) {
perror("sysctlbyname()");
return -1;
}

len = sizeof(totalmem);
if (sysctlbyname("hw.physmem", &totalmem, &len, NULL, NULL) == -1) {
perror("sysctlbyname()");
return -1;
}

len = sizeof(usermem);
if (sysctlbyname("hw.usermem", &usermem, &len, NULL, NULL) == -1) {
perror("sysctlbyname()");
return -1;
}

cpuspeed = cpuspeed / 1000000;
totalmem = (totalmem - 1000000) / 1000000;
usermem = (usermem - 1000000) / 1000000;

printf("Architecture:\t%s\n", cpuarch);
printf("Number of CPUs:\t%d\n", numcpu);
printf("CPU Model:\t%s\n", cpumodel);
printf("CPU Speed:\t%dMHz\n", cpuspeed);
printf("Total Memory:\t%dMB\n", totalmem);
printf("User Memory:\t%dMB\n", usermem);
printf("\n");

return 0;
}

相关文章

·解决了一个关于鼠标的问题
·FreeBSD5.3的一些配置
·FreeBSD的3D桌面实现(XGL/AIGLX/Beryl)
·FreeBSD下用mrtg监控本机流量、内存、cpu使用率、整网流量
·FreeBSD-Mount-总结
·用Solaris拨号上网
·注意mount的locale设置
·使用vim代替vi
·忘记Solaris root密码的解决办法

热门文章

·第n个命令级集
·/usr/pkgsrc/devel/devhelp的
·中文Firefox安装
·我的FB6.1内核优化
·为FreeBSD添加新硬盘!
·freebsd平台下配置vhcs2教程
·freebsd内核详解
·我的debian VS FreeBSD
·Unix AWK 总结
·在AIX中如何对用户卷组进行卷

Copyright@2005 www.linuxGoo.com All Right Reserved