(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'와 같음.
'컴퓨터 공부 > Advanced UNIX System Programming' 카테고리의 다른 글
[5월 7일 1교시] 프로세스 관계 + 데몬 프로세스 (0) | 2009.05.07 |
---|---|
[5월 6일 3교시] 시스템 정보 2 (0) | 2009.05.06 |
[5월 6일 1교시] 프로세스 제어 3 (0) | 2009.05.06 |
[5월 1일 3교시] 프로세스 제어 2 (0) | 2009.05.01 |
[5월 1일 2교시] 프로세스 제어 1 (0) | 2009.05.01 |