uname(系统调用)

uname系统调用可用于获取系统信息。例如,内核名字,操作系统的发行级别号,类似于”2.6.28”,操作系统版本号,机器的类型,例如x86或arm。

struct utsname {
    char sysname[];    /* Operating system name (e.g., "Linux")  内核名称*/
    char nodename[];   /* Name within "some implementation-defined network" 网络节点上的主机名*/
    char release[];    /* Operating system release (e.g., "2.6.28") 出内核发行号*/
    char version[];    /* Operating system version 内核版本*/
    char machine[];    /* Hardware identifier 主机的硬件架构名称 */       
};

#include <sys/utsname.h>
int uname(struct utsname *buf);
int olduname(struct xxxutsname *buf);
int oldolduname(struct xxxutsname *buf);

返回值:
成功,返回0,失败返回-1,错误类型在errno中。

有趣的是linux的系统调用中存在3个uname系统调用。
这些系统调用都是用于获取内核信息的。
功能上是存在重复的,但考虑到内核的向后兼容,所以并未删除重复的系统调用。

实例

#include <sys/utsname.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc,char *argv[])
{
         struct utsname buf;
         int rt=0;

         rt=uname(&buf);
         if(rt==-1)
         {
                 printf("ret == -1 \n");
                 exit(1);
         }

         printf("sysname = %s  \n",buf.sysname);
         printf("nodename = %s \n",buf.nodename);
         printf("release = %s  \n",buf.release);
         printf("version = %s  \n",buf.version);
         printf("machine = %s  \n",buf.machine);

         return 0;
}

输出

sysname = Linux
nodename = xxx-laptop
release = 3.19.0-33-generic
version =#38~14.04.1-Ubuntu SMP Fri Nov 6 18:17:49 UTC 2015
machine = i686
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pk_20140716/article/details/49964051
个人分类: Linux系统调用
上一篇编译遇到“__stack_chk_fail_local”错误
下一篇sysinfo(系统调用)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭