(시스템 프로그래밍) 4-1 시스템 관리

업데이트:
2 분 소요

시스템 프로그래밍 - 시스템관리

1. 리눅스 시스템

1) 개요

  • 시스템 정보 검색 및 설정 함수 (하드웨어)

(1) 시스템 환경

  • 운영체제 종류 관련 정보
  • 메모리 페이지의 크기
  • 최대 패스워드 길이 등

(2) 시스템 정보 검색 및 설정 함수

alt

2) 사용자 정보 관련 함수

(1) 로그인명 검색

  char *getlogin(void);
  char *cuserid(cahr *s);

(2) UID 검색

  uid_t getuid(void);
  uid_t geteuid(void);

(3) 패스워드 검색

  struct passwd *getpwuid(uid_t uid);
  struct paaswd *getpwname(const char *name);

(4) 패스워드 파일 검색

  struct passwd *getpwent(void);
  void setpwent(void);
  void endpwent(void);
  struct passwd *fgetpwent(FILE *fp);

(5) 새도우 정보 검색

  • 처음부터 암호화 처리되서 만들어진 것
  struct spwe *getspname(const char *name);

(6) 새도우 파일 검색

  struct spwd *getspent(void);
  void setspent(void);
  void endspent(void);
  struct spwd *fgetpent(FILE *fp);

(7) 그룹 정보 검색

  gid_t getgid(void);
  gid_t getegid(void);

(8) 그룹 파일 검색

  struct group *getrname(const char *name);
  struct group *getgrgid(gid_t gid);
  struct group *getgrent(void);
  void setgrent(void);
  void endgrent(void);
  struct group *fgetgrent(FILE *fp);

(9) 로그인 기록 검색

  struct utmpx *gettutxent(void);
  void setutxent(void);
  void endutxent(void);
  int utmpxname(const char *file);

3) 시간 정보 검색 함수

alt

(1) 현재 시간 정보 검색

  time_t time(time_t *tloc);
  int gettimeofday(struct timeval *fp, void *tzp);

(2) 시간대 설정

  void tzset(void);

(3) 시간 정보 분해

  struct tm *localtime(const time_t *dock);
  struct tm *gmtime(const time_t *dock);

(4) 초 단위 시간 생성

  time_t mktime(struct tmm *timeptr);

(5) 형식 지정 시간 출력

  char *ctime(const time_t *dock);
  char *asctime(const struct tm *tm);
  size_t strftime(char *restrct s,size_t maxsize, const char *r,
                  estrit formant, const struct tm *restrict timeptr);

2. 리눅스 시스템 자원

1) 운영체제 기본 정보 검색

  • 시스템에 설치된 운영체제에 대한 기본 정보 검색

alt

  • 시스템은 인텔PC고 솔라시스 10 운영체제가 설치되어 있고, 호스트명은 hanbit

(1) 운영체제 정보 검색 함수 : uname(2)

  #include <sys/utsname.h>

  int uname(struct utsname *name);
  • name : utsname 구조체 주소
utsname 구조체 - sys/utsname.h
  struct utsname{
    char sysname[_SYS_NMLN];
    char nodename[_SYS_NMLN];
    char release[_SYS_NMLN];
    char version[_SYS_NMLN];
    char machine[_SYS_NMLN];
  }
  • utsname 구조체에 운영체제 정보 저장
  • sysname : 현재 운영체제 이름
  • nodename : 호스트명
  • release : 운영체제의 릴리즈 번호
  • version : 운영체제 버전 번호
  • machine : 하드웨어 아키텍처 이름

(2) 시스템 정보 검색과 설정 : sysinfo(2)

  • command에 검색하거나 설정할 명령 지정
  • 성공 시 결과값, 실패 시 -1리턴
  #include<sys/systeminfo.h>

  long sysinfo(int command, char *buf, long count);
  • command : 검색 또는 설정할 명령
  • buf : 버퍼 주소
  • count : 버퍼 길이, 최댓값 257
command에 사용할 상주의 범주

alt

(3) 시스템 자원 정보 검색

  • 하드웨어에 따라 사용할 수 있는 자원들의 최댓값 검색
  • sysconf(), fpathconf(), pathconf()
(3-1) sysconf(3)
  • 검색할 정보를 나타내는 상수를 사용해야 함
  • sys/unistd.h 파일에 정의
  • 성공 시 시스템 자원값 또는 옵션값, 실패시 -1 리턴
  #include <unistd.h>

  long sysconf(int name);
  • name : 검색할 정보를 나타내는 상수
(3-2) 파일과 디렉토리 관련 정보 검색 :fpathconf(3), pathconf(3)
  • 성공 시 경로(path)나 파일 기술자에 지정된 파일에 설정된 자원값이나 옵션값을 정수로 리턴,
    실패시 -1 리턴
  #include <unistd.h>

  long pathconf(const char *path, int name);
  long fpathconf(int fildes, int name);
  • path : 파일이나 디렉토리 경로
  • name : 검색할 정보를 지정하는 상수
  • fildes : 파일 기술자

댓글남기기