uname(系统调用)

来源:互联网 发布:java double e 表示 编辑:程序博客网 时间:2024/04/29 11:31

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 = Linuxnodename = xxx-laptoprelease = 3.19.0-33-genericversion =#38~14.04.1-Ubuntu SMP Fri Nov 6 18:17:49 UTC 2015machine = i686
0 0
原创粉丝点击