sysinfo结构体

Linux中,可以用sysinfo来获取系统相关信息。

Linux中,sysinfo是用来获取系统相关信息的结构体。
函数声明和原型:

#include <sys/sysinfo.h>

int sysinfo(struct sysinfo *info);

结构体信息:

在Linux 2.3.16中,结构体的信息是(单位是字节):

[cpp]  view plain copy
  1. struct sysinfo {
  2. long uptime;
  3. /* 启动到现在经过的时间 */
  4. unsigned long loads[3];
  5. /* 1, 5, and 15 minute load averages */
  6. unsigned long totalram;  /* 总的可用的内存大小 */
  7. unsigned long freeram;   /* 还未被使用的内存大小 */
  8. unsigned long sharedram; /* 共享的存储器的大小 */
  9. unsigned long bufferram; /* 缓冲区大小 */
  10. unsigned long totalswap; /* 交换区大小 */
  11. unsigned long freeswap;  /* 还可用的交换区大小 */
  12. unsigned short procs;    /* 当前进程数目 */
  13. char _f[22];         /* 64字节的补丁结构 */

在Linux 2.3.23(i386), 2.3.48 (all architectures)中,结构体的信息是(单位是mem_unit字节):

[cpp]  view plain copy
  1. struct sysinfo {
  2. long uptime;          /* 启动到现在经过的时间 */
  3. unsigned long loads[3];
  4. /* 1, 5, and 15 minute load averages */
  5. unsigned long totalram;  /* 总的可用的内存大小 */
  6. unsigned long freeram;   /* 还未被使用的内存大小 */
  7. unsigned long sharedram; /* 共享的存储器的大小*/
  8. unsigned long bufferram; /* 共享的存储器的大小 */
  9. unsigned long totalswap; /* 交换区大小 */
  10. unsigned long freeswap;  /* 还可用的交换区大小 */
  11. unsigned short procs;    /* 当前进程数目 */
  12. unsigned long totalhigh; /* 总的高内存大小 */
  13. unsigned long freehigh;  /* 可用的高内存大小 */
  14. unsigned int mem_unit;   /* 以字节为单位的内存大小 */
  15. char _f[20-2*sizeof(long)-sizeof(int)];
  16. /* libc5的补丁
  17. };

返回值:

操作成功返回0,错误返回-1;

样例:

[cpp]  view plain copy
  1. #include <stdio.h>
  2. #include <linux/unistd.h>     /* 包含调用 _syscallX 宏等相关信息*/
  3. #include <linux/kernel.h>     /* 包含sysinfo结构体信息*/
  4. _syscall1(int, sysinfo, struct sysinfo*, info);
  5. //using namespace std;
  6. int main(int argc, char *agrv[])
  7. {
  8. struct sysinfo s_info;
  9. int error;
  10. error = sysinfo(&s_info);
  11. printf("\n\ncode error=%d\n",error);
  12. printf("Uptime = %ds\nLoad: 1 min%d / 5 min %d / 15 min %d\n"
  13. "RAM: total %d / free %d /shared%d\n"
  14. "Memory in buffers = %d\nSwap:total%d/free%d\n"
  15. "Number of processes = %d\n",
  16. s_info.uptime, s_info.loads[0],
  17. s_info.loads[1], s_info.loads[2],
  18. s_info.totalram, s_info.freeram,
  19. s_info.totalswap, s_info.freeswap,
  20. s_info.procs);
  21. return 0;
  22. }

输出结果:

[plain]  view plain copy
  1. #/home/chenhd/future> ./Sysinfo_1
  2. code error=0
  3. Uptime = 154s
  4. Load: 1 min22976 / 5 min 13888 / 15 min 5408
  5. RAM: total 128307200 / free 55656448 /shared263168000
  6. Memory in buffers = 263168000
  7. Swap:total50/free1073821804
  8. Number of processes = 1073823352
  1. #/home/chenhd/future>
char *clock_system_running_get()
{
    struct sysinfo info;
    static char run_time[128];
    if (sysinfo(&info)) {
        return 0;
    }
    long timenum=info.uptime;
    int runday=timenum/86400;
    int runhour=(timenum%86400)/3600;
    int runmin=(timenum%3600)/60;
    int runsec=timenum%60;
    bzero(run_time, 128);
    sprintf(run_time,"%d Days %d:%d:%d", runday,runhour,runmin,runsec);
    return run_time;
}

sysinfo结构体相关推荐

  1. linux sysinfo结构体,struct sysinfo 用法

    在Linux中,sysinfo是用来获取系统相关信息的结构体,其原型如下: struct sysinfo { long uptime;                   /* Seconds sin ...

  2. linux sysinfo结构体,编译BusyBox出现错误: struct sysinfo 重定义 该如何解决?

    Busybox 1.13.3和其他的1.16版本都是如此     arm-linux-gcc  version=4.3.3 ====================================== ...

  3. info函数linux,Linux sysinfo函数、结构体使用

    sysinfo结构体 Linux中,可以用sysinfo来获取系统相关信息. Linux中,sysinfo是用来获取系统相关信息的结构体. 函数声明和原型: #include int sysinfo( ...

  4. sysinfo函数、结构体使用

    1,头文件: #include <sys/sysinfo.h> 2,函数声明: int sysinfo(struct sysinfo *info); 3,返回值: 成功返回0,错误返回-1 ...

  5. 指向结构体的指针和指向结构体指针的指针

    例如,struct T *ptr;是指向一个结构体的指针,也可以当做一个结构体数组来用. 可以把结构体当做 int 来看,int* 类型即可以指向一个整数,也可以指向数组. struct T ** p ...

  6. Gin 框架学习笔记(02)— 参数自动绑定到结构体

    参数绑定模型可以将请求体自动绑定到结构体中,目前支持绑定的请求类型有 JSON .XML .YAML 和标准表单 form数据 foo=bar&boo=baz 等.换句话说,只要定义好结构体, ...

  7. Go 知识点(04)— 结构体字段转 json格式 tag 标签的作用

    我们知道在 Go 语言中无论是变量.常量还是函数,对于首字母大小写有不同的处理. 首字母大写,标志着该字段或者函数是能导出的,也就是可以被其它包所能访问的: 首字母小写,标志着该字段是私有的,只能在本 ...

  8. 【C#】枚举_结构体_数组

    最近看C#视频,关于这部分,先看了一遍,又照着敲了一遍,自己敲的过程发现了一些有意思的东西. 枚举:定义一个枚举类型的变量,这个变量有很多相同类型的值.比如性别Gender这个变量可以有男和女这两个值 ...

  9. C++ 结构体struct 的使用

    结构体是什么 结构体是一种有开发者定义的数据类型,以容纳许多不同的数据值 结构体的注意事项: 声明结构体的方式和声明类的方式大致相同,其区别如下: 使用关键字 struct 而不是关键字 class. ...

最新文章

  1. Microbiome:南京农大团队在粘细菌捕食的生态学功能方面取得重要进展
  2. 不等待输入_「对方正在输入……」的提示,给聊天带来什么影响?
  3. linux cat 进程,Linux下CAT程序的C实现
  4. 荣耀20 PRO差评太多?原来是这个原因,回应:差评不冤
  5. 【Vue】—解构插槽 Prop以及具名插槽的缩写
  6. iframe自适应高度调整
  7. 无线接口配置 DHCP配置
  8. 阿里云混合云新一代运维平台的演进与实践
  9. Leetcode 好题
  10. Java 11中文版 API参考文档(收藏)
  11. 文件访问被拒绝XXX 你需要权限才能执行此操作你需要计算机管理员提供的权限才能对此文件进行更改
  12. iOS平台游戏安全再议之存档修改与防御
  13. 新版LinuxLinus Torvalds发布
  14. eclipse运行java总显示上一个程序的运行结果(解决方案)
  15. 漫步奥格瑞玛 Portal Scene Manager
  16. 关于C++ variant 类型问题
  17. GBase 8s 客户端工具之dbaccess
  18. mysql instr locate_mysql函数之一:INSTR、LOCATE、POSITION VS LIKE
  19. 常见漏洞之 struts2+ jboss
  20. shell脚本中的export和PWD的作用

热门文章

  1. 关于微信的账户绑定问题
  2. 视通科技分布式系统应用于高速指挥中心
  3. python url解析_Python的url解析库--urlparse
  4. 我的linux命令手册
  5. android种textView过长自动打省略号
  6. ASP AND CLASS
  7. Shadow broker=fuzzbunch+metasploit 攻击外网测试以及metasploit大批量扫描目标IP
  8. 过拟合(定义、出现的原因4种、解决方案7种)
  9. Win11的两个实用技巧系列之蓝牙无法连接、错误代码0x80070483怎么办?
  10. h5 img js 点击图片放大_网页对应图片点击放大 html+js