리눅스에서는 shell(base)를 통해 명령 및 프로그램을 실행
환경변수는 명령이나 프로그램을 수행하는 데 필요한 정보를 가짐
HOME : 현재 로그인 사용자의 홈 디렉토리
PATH : 명령을 검색할 디렉토리 목록. 리눅스 명령에 대한 실행 파일의 위치가 포함
PS1 : 쉘 프롬프트
MANPATH : 온라인 매뉴얼 검색 디렉토리 목록
USERNAME : 로그인 사용자 명
HOSTNAME : 사용중인 시스템의 호스트 명
c에서 getenv("환경변수명"); 으로 값을 얻어올 수 있음
<-> putenv();
##### 사용자 계정정보
/etc/passwd : 리눅스에서 사용자 계정정보를 보관하는 파일
계정, UID, GID, 홈디렉토리, 로그인 쉘 등을 포함한 상세한 정보를 저장
# include <sys/types.h>
struct passwd *getpwuid(uid_t uid);
struct passwd *getpwnam(const char *name);
struct passwd {
char *pw_name;
uid_t pw_uid;
gid_t pw_gid;
...
}
### UID
: 리눅스 사용자 ID
1. Real UID : 실제 로그인 한 사용자 계정의 UID
getuid(), getgid(), setuid(), setgid()
2. Effective UID : 파일 접근의 효과를 가지고 있는 UID
일반적으로 Real UID와 동일하나 set-UID 퍼미션이 설정된 프로그램을 수행하면 일시적으로 변경이 가능하며,
파일 접근에 대한 권한을 설정할 수 있음
geteuid(), getegid()
### PID
리눅스에서 모든 명령은 파일로 정의되며, 명령을 수행한다는 것은 해당 파일을 실행하는 프로세스가 동작한다는 것을 의미
getpid() : 현재 프로세스 ID 출력
getppid() : 현재 프로세스의 부모 프로세스 ID 출력
### time
리눅스에서는 시스템 시간을 clock tick으로 세며 다음과 같은 함수들을 제공
time() 초단위 시간으로 확인 가능
gettimeofday() 마이크로 초 단위의 시간까지 확인 가능
times() 프로그램의 실행 시간을 확인하는 함수
uname() 시스템 호스트 정보. 시스템의 이름이나 OS 종류 및 버전 등에 대한 정보가 필요할 경우 사용
localtime() time()에서 구한 시간을 연,월,일,시,분,초의 형식으로 계산해주는 함수
### 시스템 자원의 제한치 설정
int getrlimit(int resource, struct rlimit *r_limit);
int setrlimit(int resource, const struct rlimit *r_limit);
struct rlimit {
rlim_t rlim_cur; // 현재 설정된 소프트 제한 값 확인
rlim_t rlim_max; // 절대적 제한치
};
<설정 가능한 리소스 종류>
RLIMIT_CPU
RLIMIT_FSIZE
RLIMIT_DATA
RLIMIT_STACK
RLIMIT_CORE
RLIMIT_NPROC
RLIMIT_NOFILE
RLIMIT_MEMLOCK