리눅스에서는 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



'System > Linux OS ' 카테고리의 다른 글

.exrc  (0) 2016.04.23
lsof  (0) 2015.12.24
strace, ltrace  (0) 2015.12.24
gcc / gdb  (0) 2015.12.24
man  (0) 2015.12.24

+ Recent posts