ㅁ시스템 정보 검색: 기본 환경과 관련된 구조체나 상수를 사용해 정보를 검색
하드웨어와 운영체제의 종류 정보, 메모리 페이지의 크기나 최대 패스워드 길이와 같은 시스템 환경 설정 정보 등
[시스템 정보 검색 함수]
• uname() 함수: 설치된 운영 체제 정보와 같은 시스템 기본 정보를 검색할 수 있음
• sysconf() 함수: 시스템 자원 정보를 검색할 수 있음 (conf: configuration)
• fpathconf() 함수와 pathconf() 함수: 파일과 디렉터리 자원 정보를 검색할 수 있음
uname 명령: 운영체제 기본 정보 검색
• 시스템에 설치된 운영체제의 이름과 버전, 호스트명, 하드웨어 종류 등을 검색하려면 uname 명령을 사용
• uname 명령에 -a 옵션을 지정하면 현재 시스템에 설치되어 있는 운영체제 정보가 출력
ㅇ int uname(struct utsname* buf): 운영체제 정보 검색
- buf : utsname 구조체 주소
운영체제 정보를 검색해 utsname 구조체에 저장한다
utsname 구조체는 sys/utsname.h 파일에 정의되어 있고 man –s 2 uname으로 확인할 수 있다
struct utsname {
char sysname[];
char nodename[];
char release[];
char version[];
char machine[];
};
utsname 구조체의 각 항목은 문자형 배열이며, 각 값은 널 종료 문자열로 저장
#include <stdio.h>
#include <stdlib.h>
#include <sys/utsname.h>
int main() {
struct utsname uts; // utsname 구조체 변수를 선언
if (uname(&uts) == -1) { // 성공하면 utsname 구조체 변수인 uts에 시스템 정보가 저장
perror("uname");
exit(1);
}
printf("OSname : %s\n", uts.sysname);
printf("Nodename : %s\n", uts.nodename);
printf("Release : %s\n", uts.release);
printf("Version : %s\n", uts.version);
printf("Machine : %s\n", uts.machine);
return 0;
}
ㅇ long sysconf(int name): 시스템 자원 정보 검색
- name : 검색할 정보를 나타내는 상수
검색하려는 시스템 정보를 나타내는 상수를 인자로 받고 현재 설정되어 있는 시스템 자원값 또는 옵션값을 리턴
실패하면 –1을 반환
sysconf() 함수의 인자로 지정할 수 있는 상수는 sys/unistd.h 파일에 정의
#include <stdio.h>
#include <unistd.h>
int main() {
// 검색하고 싶은 명령을 sysconf() 함수의 인자로 지정
printf("Arg Max : %ld\n", sysconf(_SC_ARG_MAX));
printf("Clock Tick : %ld\n", sysconf(_SC_CLK_TCK));
printf("Max Open File : %ld\n", sysconf(_SC_OPEN_MAX));
printf("Max Login Name Length : %ld\n", sysconf(_SC_LOGIN_NAME_MAX));
return 0;
}
(파일과 디렉터리 자원 검색)
ㅇ long fpathconf(int fd, int name)
- fd : 파일 기술자
- name : 검색할 정보를 지정하는 상수
열린 파일의 파일 기술자(fd)를 인자로 받아 이 파일과 관련된 자원값이나 옵션값 정보를 검색
name에는 검색할 정보를 나타내는 상수를 지정
성공하면 결과를 정수로 반환, 실패하면 –1을 리턴
ㅇ long pathconf(const char* path, int name)
- path : 파일이나 디렉터리 경로
- name : 검색할 정보를 지정하는 상수
path에 지정한 파일이나 디렉터리와 관련해 설정된 자원값이나 옵션값을 반환
name에는 검색할 정보를 나타내는 상수를 지정
성공하면 결과를 정수로 반환, 실패하면 –1을 리턴
#include <stdio.h>
#include <unistd.h>
int main() {
// 현재 디렉터리(.)의 최대 링크 수(_PC_LINK_MAX)와 최대 파일명 길이(_PC_NAME_MAX),
// 최대 경로 길이(_PC_PATH_MAX)를 검색해 리턴값을 출력
printf("Link Max : %ld\n", pathconf(".", _PC_LINK_MAX));
printf("Name Max : %ld\n", pathconf(".", _PC_NAME_MAX));
printf("Path Max : %ld\n", pathconf(".", _PC_PATH_MAX));
return 0;
}
참고 및 출처: 시스템 프로그래밍 리눅스&유닉스(이종원)
'Computer Science > UNIX & Linux' 카테고리의 다른 글
[UNIX/Linux] ep6+) 프로세스 정보 함수 실습 (1) | 2024.10.14 |
---|---|
[UNIX/Linux] ep6) 프로세스 정보 (4) | 2024.10.12 |
[UNIX/Linux] ep4+) 고수준 파일 입출력 함수 실습 (0) | 2024.10.07 |
[UNIX/Linux] ep4) 고수준 파일 입출력 (1) | 2024.10.07 |
[UNIX/Linux] ep3+) 저수준 파일 입출력 함수 실습 (4) | 2024.10.02 |