免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1811 | 回复: 8
打印 上一主题 下一主题

[函数] 获得系统信息的函数是什么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-12 21:42 |只看该作者 |倒序浏览
在linux中获得cpu使用率,内存的使用率,硬盘的使用率的函数分别是什么?
或者哪里有top,df命令的源码也行,谢谢了!

[ 本帖最后由 goodgj 于 2006-10-12 21:45 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-10-12 21:56 |只看该作者
这些是 *nix 的基本工具啊,所以代码应该不难找。

论坛徽章:
0
3 [报告]
发表于 2006-10-13 09:27 |只看该作者
原帖由 goodgj 于 2006-10-12 21:42 发表
在linux中获得cpu使用率,内存的使用率,硬盘的使用率的函数分别是什么?
或者哪里有top,df命令的源码也行,谢谢了!


cpu:  /proc/stat
memory and loads:  int sysinfo(struct sysinfo *info);
disk:  int statfs(const char *path, struct statfs *buf);
可以取得某个分区的信息,至于整个硬盘需要看df源码

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
4 [报告]
发表于 2006-10-13 18:49 |只看该作者
看 APUE 第六七章。

论坛徽章:
0
5 [报告]
发表于 2006-10-16 13:48 |只看该作者
df应该可以用stat等函数实现吧~!

论坛徽章:
0
6 [报告]
发表于 2006-10-16 14:02 |只看该作者
getconf
sysconf
sysinfo

论坛徽章:
0
7 [报告]
发表于 2006-10-16 14:03 |只看该作者
#include <stdio.h>
#include <sys/utsname.h>
#include <sys/systeminfo.h>
#include "ssp.h"

#define psysinfo(name) print_sysinfo (#name, name)

static void print_sysinfo (const char *name, int command);

int main (void)
{
        struct utsname utsname;

        if (uname (&utsname) == -1)
                err_msg ("uname failed");
        printf ("Info from uname:\n");
        printf ("  sysname: %s\n", utsname.sysname);
        printf ("  nodename: %s\n", utsname.nodename);
        printf ("  release: %s\n", utsname.release);
        printf ("  version: %s\n", utsname.version);
        printf ("  machine: %s\n\n", utsname.machine);

        printf ("Info from sysinfo\n");
        psysinfo (SI_SYSNAME);
        psysinfo (SI_HOSTNAME);
        psysinfo (SI_RELEASE);
        psysinfo (SI_VERSION);
        psysinfo (SI_MACHINE);
        psysinfo (SI_ARCHITECTURE);
#ifdef SI_ISALIST
        psysinfo (SI_ISALIST);
#endif
        psysinfo (SI_PLATFORM);
        psysinfo (SI_HW_PROVIDER);
        psysinfo (SI_HW_SERIAL);
        psysinfo (SI_SRPC_DOMAIN);
#ifdef SI_DHCP_CACHE
        psysinfo (SI_DHCP_CACHE);
#endif

        return (0);
}

static void print_sysinfo (const char *name, int command)
{
        char buf [257];

        if (sysinfo (command, buf, 257) == -1)
                err_msg ("sysinfo (%s) failed", name);
        printf ("  %s: %s\n", name, buf);
}

论坛徽章:
0
8 [报告]
发表于 2006-10-16 14:04 |只看该作者
sysconf:

#include <stdio.h>
#include <unistd.h>

#define ONE_MB (1024 * 1024)

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

        num_procs = sysconf (_SC_NPROCESSORS_CONF);
        procs_online = sysconf (_SC_NPROCESSORS_ONLN);
        page_size = sysconf (_SC_PAGESIZE);
        num_pages = sysconf (_SC_PHYS_PAGES);
        free_pages = sysconf (_SC_AVPHYS_PAGES);

        mem = (longlong_t) ((longlong_t) num_pages * (longlong_t) page_size);
        mem /= ONE_MB;
        free_mem = (longlong_t) free_pages * (longlong_t) page_size;
        free_mem /= ONE_MB;

        printf ("%ld CPU%s installed, %ld online\n", num_procs,
                (num_procs > 1) ? "s" : "", procs_online);
        printf ("%lld MB physical memory, %lld MB free\n", mem, free_mem);

        return (0);
}

论坛徽章:
0
9 [报告]
发表于 2006-10-16 14:10 |只看该作者
以上两个程序来自 《Solaris系统编程》 第8章
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP