《UNIXLinux程序设计教程》一1.7 系统信息

简介: 本节书摘来自华章出版社《UNIXLinux程序设计教程》一 书中的第1章,第1.7节,作者:赵克佳 沈志宇,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.7 系统信息

当我们面对一台计算机时,首先想要了解的可能是这台机器的系统特征,如机器的名字、操作系统的名称和版本号、系统的能力和限制等信息。这一节介绍几个获取主机信息的函数,下一节讨论系统的能力限制值。

1.7.1 机器标识

每一台机器都有一个主机名。主机名由系统管理员指定,在网络中主机名可能是一个网络域名。
函数gethostname()和sethostname ()可用来获取和设置主机名。

#include <unstd.h>

int gethostname (char *name,size_t size);
int sethostname (const char *name,size_t length);

gethostname()返回以NUL(0)字符结束的主机名于字符数组name之中,参数size给出此数组的字节大小。当size 指定的空间不足以存放主机名时,gethostname()存储截断了的主机名至name,并且返回–1。此时,应当用一个更大的数组重新调用该函数。POSIX规定主机名的字符个数不超过系统符号常数HOST_NAME_MAX之值,Linux定义其值为64字节。
sethostname()设置主机的名字为name,name是一个长度为length的字符串。只有特权进程才允许调用此函数,通常它只在系统自举时调用一次。

1.7.2 硬件/软件类型识别

函数uname()可用来查看运行该程序的计算机的操作系统版本和硬件信息。

#include <sys/utsname.h>

int uname(struct utsname *info);

uname()是一个系统调用,成功时返回非负整数,同时将操作系统和主机的信息保存在info所指的数据结构中;失败则返回–1。其中utsname结构类型的成员如表1-2所示。
utsname成员的长度与特定的实现有关。有的实现使用固定数值常数,有的实现则使用符号常数,如UTSLEN或_UTSNAME_LENGTH等。不过当我们希望获得uname()返回的这些成员的有效数据长度时,最好由sizeof()来确定。
screenshot

例1-2 程序1-2是gethostname()和uname()的示例程序,它打印出机器的主机名、操作系统版本号和机器类型信息。

screenshot

相关文章
|
缓存 网络协议 Unix
Linux(UNIX)五种网络I/O模型与IO多路复用
Linux(UNIX)五种网络I/O模型与IO多路复用
585 0
|
Unix Shell Linux
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
390 2
|
Unix Shell Linux
在Linux和类Unix系统中,Shell提供了多种命令用于用户和权限管理
在Linux和类Unix系统中,Shell提供了多种命令用于用户和权限管理
342 4
|
安全 Unix Linux
Unix:Linux的“祖师爷”
Unix的诞生 Unix操作系统诞生于1969年,由肯·汤普逊(Kenneth Lane Thompson)和丹尼斯·里奇(Dennis MacAlistair Ritchie)在AT&T的贝尔实验室开发。其初衷是为了在闲置的PDP-7计算机上开发一个简单的操作系统,以便进行编程和游戏。最初的Unix是用汇编语言编写的,但随后为了更高效的开发和更好的可移植性,里奇和汤普逊用C语言重写了Unix的大部分代码,这奠定了Unix的基础,并促进了C语言的广泛应用。
634 2
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
371 2
|
Unix 物联网 大数据
操作系统的演化与比较:从Unix到Linux
本文将探讨操作系统的历史发展,重点关注Unix和Linux两个主要的操作系统分支。通过分析它们的起源、设计哲学、技术特点以及在现代计算中的影响,我们可以更好地理解操作系统在计算机科学中的核心地位及其未来发展趋势。
|
Unix Linux 程序员
Unix:Linux的“逗趣祖师爷”与它的不凡传承
在科技长河中,Unix犹如一颗恒星,既是历史见证者也是未来的启发者。1969年,因程序员肯·汤普森想在他的PDP-7上玩“Space Travel”游戏,意外创造了Unix,以简洁优雅的代码改变了操作系统的世界。进入90年代,林纳斯·托瓦兹受Unix启发,开发了开源免费的Linux,像是Unix调皮的孙子,不仅继承其精髓还增添了开放共享的精神。Unix与Linux之间的传承,就像是智者与追蝶孩童的故事,充满了岁月的智慧与新生的活力,提醒我们科技传奇往往源于不起眼的小事。下次使用Linux时,不妨会心一笑吧!
464 0
|
开发框架 Unix Linux
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
LangChain 构建问题之在Unix/Linux系统上设置OpenAI API密钥如何解决
516 0
|
Oracle Ubuntu Unix
Unix与Linux区别
Unix: Unix是一个操作系统家族的名称,最早由贝尔实验室(Bell Labs)的肖像电机公司(AT&T)开发。最早的Unix版本是在1969年创建的。 Linux: Linux是由芬兰计算机科学家Linus Torvalds在1991年创建的。它是作为一个免费、开放源代码的Unix克隆而开始的。
454 1
|
Unix Shell Linux
在Unix/Linux Shell中,管道(`|`)和重定向
在Unix/Linux Shell中,管道(`|`)和重定向
747 1