Linux 笔记--sysinfo 函数获取系统信息--内存、运行时间等信息

sysinfo 函数 返回系统信息(内存、运行时间等信息)

1c15516f43985a192fb5fecafb94b17f.png

原型:

#include <sys/sysinfo.h>


int sysinfo(struct sysinfo *info);

描述:

sysinfo() returns certain statistics on memory and swap usage, as well as the load average.


       Until Linux 2.3.16, sysinfo() returned information in the following structure:


           struct sysinfo {
               long uptime;             /* Seconds since boot */
               unsigned long loads[3];  /* 1, 5, and 15 minute load averages */
               unsigned long totalram;  /* Total usable main memory size */
               unsigned long freeram;   /* Available memory size */
               unsigned long sharedram; /* Amount of shared memory */
               unsigned long bufferram; /* Memory used by buffers */
               unsigned long totalswap; /* Total swap space size */
               unsigned long freeswap;  /* Swap space still available */
               unsigned short procs;    /* Number of current processes */
               char _f[22];             /* Pads structure to 64 bytes */
           };


       In the above structure, the sizes of the memory and swap fields are given in bytes.
Since Linux 2.3.23 (i386) and Linux 2.3.48 (all architectures) the structure is:


           struct sysinfo {
               long uptime;             /* Seconds since boot */
               unsigned long loads[3];  /* 1, 5, and 15 minute load averages */
               unsigned long totalram;  /* Total usable main memory size */
               unsigned long freeram;   /* Available memory size */
               unsigned long sharedram; /* Amount of shared memory */
               unsigned long bufferram; /* Memory used by buffers */
               unsigned long totalswap; /* Total swap space size */
               unsigned long freeswap;  /* Swap space still available */
               unsigned short procs;    /* Number of current processes */
               unsigned long totalhigh; /* Total high memory size */
               unsigned long freehigh;  /* Available high memory size */
               unsigned int mem_unit;   /* Memory unit size in bytes */
               char _f[20-2*sizeof(long)-sizeof(int)];
                                        /* Padding to 64 bytes */
           };


       In the above structure, sizes of the memory and swap fields are given as multiples of mem_unit bytes.

其他信息:

RETURN VALUE
       On success, sysinfo() returns zero.  On error, -1 is returned, and errno is set to indicate the cause of the error.


ERRORS
       EFAULT info is not a valid address.


VERSIONS
       sysinfo() first appeared in Linux 0.98.pl6.


CONFORMING TO
       This function is Linux-specific, and should not be used in programs intended to be portable.

相关文件:

NOTES
All of the information provided by this system call is also available via /proc/meminfo and /proc/loadavg.

b764cfd16b9a483cbe0531aea88d1774.png

测试代码:

static int nuc980_memory_info()
{
    struct sysinfo s_info;
    uint32_t totalRam;
    uint32_t freeRam;


    if(sysinfo(&s_info)==0)
    {
        totalRam = (uint32_t)(s_info.totalram/1024/1024);
        printf("totalRam=%d M\n",totalRam);
        freeRam =  (uint32_t)(s_info.freeram/1024/1024);
        printf("freeRam=%d M\n",freeRam);
    }
    else
    {
        fprintf(stderr, "nuc980_memory_info failed: %s\n", strerror(errno));
    }
    return 0;
}

欢迎关注公众号:嵌入式学习与实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值