컴퓨터 공부/Advanced UNIX System Programming

[5월 6일 2교시] 프로세스 제어 4 + 시스템 정보 1

려리군 2009. 5. 6. 11:09

(265~267쪽 소스 참고)

wait3함수를 이용하여 종료된 프로세스의 자원정보를 얻을 수 있음.

shell에서 'time 프로그램명'과 비슷함.


system함수

#include<stdlib.h>

int system(const char *cmdstring);

라이브러리 함수.

fork, exec, waitpid함수로 구성.

리턴

 - fork나 waitpid의 EINTR외의 리턴이면 -1

 - exec가 실패하면 _exit(127)

 - 성공시 쉘의 종료 상태값 리턴


시스템 정보

사용자 ID exec setuid(uid)
SUID bit off SUID bit on 슈퍼유저 일반유저
실제 사용자 ID 불변 불변 uid로 설정 불변
유효 사용자 ID 불변 프로그램 파일의
소유자 ID로 설정
uid로 설정 uid로 설정
saved-set-user ID 유효 사용자
ID에서 복사
유효 사용자
ID에서 복사
uid로 설정 불변

예시) 일반사용자 A는 실행 파일 소유자가 B일때 SUID가 on일 경우 유효사용자 ID는 A,B 모두 가능.

#include<sys/types.h>
#include<unistd.h>
int setreuid(uid_t ruid, uid_t euid);
int setregid(uid_t ruid, uid_t euid);
현재 실제 사용자 id와 유효 사용자 id를 교환

#include<sys/types.h>
#include<unistd.h>
int seteuid(uid_t uid);
int setegid(uid_t uid);
유효id만 바꾸는 명령

#include<unistd.h>
char *getlogin(void);
사용자의 로그인 이름을 얻음.
int uname(struct utsname *uname);
현재 사용 중인 호스트와 운영체제에 관한 정보를 알아낸다.
shell의 'uname -a'와 같음.