代码之家  ›  专栏  ›  技术社区  ›  tig Charlie Martin

不使用外部工具获取总系统内存

  •  2
  • tig Charlie Martin  · 技术社区  · 14 年前

    要获得安装的RAM总数,我可以使用 popen("sysctl -n hw.memsize", "r") ,但是是否有一些库可以在不运行外部工具的情况下获取此信息?

    3 回复  |  直到 14 年前
        1
  •  3
  •   ceeit    14 年前
        2
  •  5
  •   Jacob    14 年前

    系统控制

    你可以使用 sysctl (更多细节) here )

    本节中使用的符号为 在文件sysctl.h.中声明 功能:

    int sysctl (int *names, int nlen, void *oldval, size_t *oldlenp, void *newval, size_t newlen)
    

    地质学

    getrusage

    #include <sys/resource.h> 
    
    int getrusage(int who, struct rusage *usage); 
    
    struct rusage {
        struct timeval ru_utime; /* user time used */
        struct timeval ru_stime; /* system time used */
        long   ru_maxrss;        /* maximum resident set size */
        long   ru_ixrss;         /* integral shared memory size */
        long   ru_idrss;         /* integral unshared data size */
        long   ru_isrss;         /* integral unshared stack size */
        long   ru_minflt;        /* page reclaims */
        long   ru_majflt;        /* page faults */
        long   ru_nswap;         /* swaps */
        long   ru_inblock;       /* block input operations */
        long   ru_oublock;       /* block output operations */
        long   ru_msgsnd;        /* messages sent */
        long   ru_msgrcv;        /* messages received */
        long   ru_nsignals;      /* signals received */
        long   ru_nvcsw;         /* voluntary context switches */
        long   ru_nivcsw;        /* involuntary context switches */
    };
    
        3
  •  1
  •   Praveen S    14 年前

    您可以使用API GetRusage

         int who = RUSAGE_SELF;
        struct rusage usage={0,};
        int ret=0;
        ret = getrusage(who, &usage);
    

    查找的结构 rusage 选择你关心的价值观。