리눅스 시스템에서는 시스템 정보를 확인하는 uname, gethostname 함수를 제공합니다. uname은 현재 시스템의 운영체제 정보를 struct utsname 형식 변수 주소에 값을 채워줍니다. 그리고 gethostname은 호스트 이름을 채워줍니다. 일반적으로 struct utsname의 nodename과 호스트 이름은 일치합니다.
#include <sys/utsname.h >
int uname(struct utsname *pn);
struct utsname{
char sysname[9]; //os name
char nodename[9];
char release[9];
char version[9];
char machine[9]; //hardware type
};
#include <unistd.h >
int gethostname(char *buf, int bsize);
다음은 uname과 gethostname을 호출하여 시스템 정보를 출력하는 예제 코드와 실행 화면입니다. 참고로 MAXHOSTNAMELEN은 sys/param.h 파일에 정의하고 있는 매크로 상수명입니다.
/********************************************************************** * ex_uname.c * * exmple source – print system id * **********************************************************************/ #include <stdio.h> #include <unistd.h> #include <sys/utsname.h> #include <sys/param.h> int main(int argc, char **argv) { struct utsname un; uname(&un); printf("o/s name: %s\n", un.sysname); printf("node name:%s\n", un.nodename); printf("release:%s\n",un.release); printf("version:%s\n",un.version); printf("machine:%s\n",un.machine); char hn[MAXHOSTNAMELEN]=""; gethostname(hn,MAXHOSTNAMELEN); printf("host name:%s\n",hn); return 0; }