UNIX/LINUXプログラム設計教程(1)--システム情報の取得
2007 ワード
1.ホストID
各マシンにはホスト名があります.ホスト名はシステム管理者によって指定されています.ネットワークでホスト名はネットワークドメイン名かもしれません.
関数gethostname()とsethostname()はホスト名を取得して設定するために使用できます.
関数のプロトタイプは以下の通りです.
2.ハードウェア/ソフトウェアの種類の識別
関数uname()は、このプログラムを実行するコンピュータのオペレーティングシステムのバージョン情報とハードウェア情報を確認するために使用できます.
utsname構成メンバーは以下の通りです.
メンバー 説明
char sysname[] オペレーティングシステム名
char nodename[] コンピュータのホスト名
char release[] オペレーティングシステムの現在のバージョン番号
char version[] オペレーティングシステムの現在のバージョン内のレベル番号
char machine[] 使用するハードウェアの種類を説明します.
これらの関数の使い方を以下の例で示します.
各マシンにはホスト名があります.ホスト名はシステム管理者によって指定されています.ネットワークでホスト名はネットワークドメイン名かもしれません.
関数gethostname()とsethostname()はホスト名を取得して設定するために使用できます.
関数のプロトタイプは以下の通りです.
#include<unstd.h>
int gethostname(char *name, size_t size);
int sethostname(const char *name, size_t length);
2.ハードウェア/ソフトウェアの種類の識別
関数uname()は、このプログラムを実行するコンピュータのオペレーティングシステムのバージョン情報とハードウェア情報を確認するために使用できます.
#include<sys/utsname.h>
int uname(struct utsname *info);
uname()はシステム呼び出しで、成功したら負の整数ではなく、オペレーティングシステムとホストの情報をinfoが指すデータ構造に保存します.失敗したら-1を返しますutsname構成メンバーは以下の通りです.
メンバー 説明
char sysname[] オペレーティングシステム名
char nodename[] コンピュータのホスト名
char release[] オペレーティングシステムの現在のバージョン番号
char version[] オペレーティングシステムの現在のバージョン内のレベル番号
char machine[] 使用するハードウェアの種類を説明します.
これらの関数の使い方を以下の例で示します.
/*
* main.c
*
* Created on: 2013 7 30
* Author: DLUTBruceZhang
*/
#include<stdio.h>
#include<unistd.h>
#include<sys/utsname.h>
#define MAXHOSTNAMELEN 64
int main(void)
{
struct utsname uts;
char hostname[MAXHOSTNAMELEN];
size_t size = MAXHOSTNAMELEN;
if(gethostname(hostname, size) != 0)
{
printf("error");
return -1;
}
printf("hostname:%s
", hostname);
if(uname(&uts) < 0)
{
printf("error");
return -1;
}
printf("System is %s on %s hardware
",uts.sysname,uts.machine);
printf("Nodename is %s
",uts.nodename);
printf("Release is %s, Version is %s
",uts.release,uts.version);
return 0;
}
実行結果は以下の通りです.hostname:ubuntu
System is Linux on i686 hardware
Nodename is ubuntu
Release is 3.0.0-12-generic, Version is #20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011