您的位置:首页 > 其它

uname(系统调用)

2015-11-21 14:00 513 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: