Linux下用C语言获取系统相关信息

2014/09/1616:32:07 发表评论

这里要用到一个叫uname的函数,可以通过man 2 uname命令地行查看函数的说明:

DESCRIPTION

       uname()  returns  system  information  in  the structure pointed to by buf.  The

       utsname struct is defined in <sys/utsname.h>:

           struct utsname {

               char sysname[];    /* Operating system name (e.g., "Linux") */

               char nodename[];   /* Name within "some implementation-defined

                                     network" */

               char release[];    /* OS release (e.g., "2.6.28") */

               char version[];    /* OS version */

               char machine[];    /* Hardware identifier */

           #ifdef _GNU_SOURCE

               char domainname[]; /* NIS or YP domain name */

           #endif

           };

我们可以看到需要一个struct ustname结构,该结构中可以获取到各种信息,我们来写一个测试程序试一试:

#include <sys/utsname.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
    struct utsname test;

    int fd = uname(&test);

    if(fd < 0)
    {
        perror("uname error\n");
        return -1;
    }
    else
    {
        printf("sysname=%s\nrelease=%s\nversion=%s\nmachine=%s\n",
                test.sysname,test.release,test.version,test.machine);
    }
    return 0;
}

编译:gcc test.c -o test

运行:./test

在我的机器上输出了如下信息:

sysname=Linux
release=3.13.0-26-generic
version=#48-Ubuntu SMP Wed May 7 23:31:02 UTC 2014
machine=x86_64

  • 微信扫码赞助
  • weinxin
  • 支付宝赞助
  • weinxin

发表评论

您必须才能发表评论!