Manpages

名 前

uname − 現 在 稼 働 中 の カ ー ネ ル に つ い て の 名 前 と 情 報 を 得 る

書 式

#include <sys/utsname.h>

int uname(struct utsname *buf);

説 明

uname() は buf で 指 さ れ る 構 造 体 に シ ス テ ム 情 報 を 返 す 。 utsname 構 造 体 は <sys/utsname.h> で 以 下 の よ う に 定 義 さ れ て い る 。

struct utsname {
char sysname[]; /* OS の 名 前 (例 : "Linux") */
char nodename[]; /* 「 実 装 時 に 定 義 さ れ た 、 何 ら か の ネ ッ ト ワ ー ク 」 に お け る マ シ ン 名
*/
char release[]; /* オ ペ レ ー シ ョ ン シ ス テ ム の リ リ ー ス 番 号 (例 : "2.6.28") */
char version[]; /* オ ペ レ ー テ ィ ン グ シ ス テ ム の バ ー ジ ョ ン */
char machine[]; /* ハ ー ド ウ ェ ア 識 別 子 */
#ifdef _GNU_SOURCE
char domainname[]; /* NIS や YP の ド メ イ ン 名 */
#endif };

struct utsname に あ る 配 列 の 長 さ は 指 定 さ れ て い な い (「 注 意 」 の 節 を 参 照 )。 フ ィ ー ル ド は ヌ ル バ イ ト ('\0') で 終 端 さ れ る 。

返 り 値

成 功 し た 場 合 は 0 が 返 さ れ る 。 エ ラ ー の 場 合 は −1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。

エ ラ ー

EFAULT

buf が 有 効 で な い 。

準 拠

SVr4, POSIX.1−2001. 4.3BSD に は uname() コ ー ル が な い 。

domainname メ ン バ ー (NIS ま た は YP ド メ イ ン 名 ) は GNU の 拡 張 で あ る 。

注 意

こ れ は シ ス テ ム コ ー ル で あ り 、 OS は 名 前 ・ リ リ ー ス ・ バ ー ジ ョ ン な ど を た ぶ ん 分 か っ て い る だ ろ う 。 さ ら に そ れ が 稼 働 し て い る ハ ー ド ウ ェ ア も 分 か っ て い る だ ろ う 。 よ っ て 構 造 体 の 4 つ の フ ィ ー ル ド に は 意 味 が あ る 。 一 方 、 nodename フ ィ ー ル ド に は 意 味 が な い : こ の フ ィ ー ル ド は 現 在 の マ シ ン の (定 義 さ れ て い な い ) ど こ か の ネ ッ ト ワ ー ク に お け る 名 前 を 与 え る が 、 通 常 マ シ ン は 複 数 の ネ ッ ト ワ ー ク に 属 し 、 複 数 の 名 前 を 持 つ 。 さ ら に 、 カ ー ネ ル は こ の よ う な 情 報 を 知 る 術 を 持 た な い の で 、 こ こ で の 答 え は 前 も っ て 教 え て や ら な け れ ば な ら な い 。 こ れ は 追 加 フ ィ ー ル ド で あ る domainname に つ い て も 同 様 で あ る 。 こ の た め Linux で は シ ス テ ム コ ー ル sethostname(2)setdomainname(2) が 使 わ れ る 。 「 sethostname(2) で 設 定 さ れ る ホ ス ト 名 は 、 uname() で 返 さ れ る 構 造 体 の nodename フ ィ ー ル ド と 同 じ 文 字 列 で あ る 」 と 規 定 し て い る 標 準 規 格 は な い (実 際 、 256 バ イ ト の ホ ス ト 名 と 8 バ イ ト の ノ ー ド 名 を 許 可 し て い る シ ス テ ム も あ る )。 し か し 、 Linux で は 同 じ 文 字 列 が 返 さ れ る 。 setdomainname(2)domainname フ ィ ー ル ド に つ い て も 同 じ こ と が 成 り 立 つ 。 構 造 体 の フ ィ ー ル ド の 長 さ は さ ま ざ ま で あ る 。 OS や ラ イ ブ ラ リ の 中 に は 、 ハ ー ド コ ー ド さ れ た 9, 33, 65, 257 な ど の 値 を 使 っ て い る も の も あ る 。 ま た SYS_NMLN, _SYS_NMLN, UTSLEN, _UTSNAME_LENGTH な ど を 使 っ て い る シ ス テ ム も あ る 。 は っ き り 言 っ て 、 こ れ ら の 定 数 を 使 う の は 悪 い 考 え 方 で あ り 、 sizeof(...) を 使 う べ き で あ る 。 イ ン タ ー ネ ッ ト ホ ス ト 名 で 使 う 領 域 を 持 た せ る た め に 、 257 が 選 ば れ る こ と が 多 い 。

utsname の 情 報 は 、 /proc/sys/kernel/{ostype, hostname, osrelease, version, domainname} を 使 っ て ア ク セ ス す る こ と も で き る 。

C ラ イ ブ ラ リ と カ ー ネ ル ABI の 違 い 時 間 の 経 過 と と も に 、 utsname 構 造 体 の サ イ ズ が 大 き く な り 、 こ の 影 響 で uname() に は 3つ の バ ー ジ ョ ン が 存 在 す る : sys_olduname() (ス ロ ッ ト は __NR_oldolduname)、 sys_uname() (ス ロ ッ ト は __NR_olduname)、 sys_newuname() (ス ロ ッ ト は __NR_uname)。 sys_olduname() は す べ て の フ ィ ー ル ド が 長 さ 9 を 使 っ て い た 。 sys_uname() は 長 さ 65 を 使 っ て い た 。 sys_newuname() も 長 さ 65 を 使 っ て い る が 、 domainname フ ィ ー ル ド が 追 加 さ れ て い る 。 glibc の uname() ラ ッ パ ー 関 数 は 、 こ れ ら の 詳 細 を ア プ リ ケ ー シ ョ ン か ら 隠 蔽 し 、 カ ー ネ ル が 提 供 し て い る シ ス テ ム コ ー ル の う ち 最 新 の バ ー ジ ョ ン を 起 動 す る 。

関 連 項 目

uname(1), getdomainname(2), gethostname(2), namespaces(7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。