컴퓨터 공부/Advanced UNIX System Programming

[5월 6일 1교시] 프로세스 제어 3

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

프로그램의 실행

int execve(const char *path, char *const argv[], char *const envp[]);

위의 함수만 시스템 콜. 나머지 5개 함수는 라이브러리 함수.


int execl(const char *path, const char *arg0, ... const char *argn, (char*) 0);

 - 형태로 argument는 하나씩

 - l : 리스트 형태의 명령 라인 인자.

int execv(const char *path, char *const argv[]);

 - 이중포인터 형태로 argument를 넣음. argv[마지막] = NULL;

 - v : 벡터 형태의 명령 라인 인자

ine execle(const char *path, const char *arg0, ... const char *argn, (char*) 0, char *const envp[]);

int execve(const char *path, char *const argv[], char *const envp[]);

 - char *const envp[] 부분은 환경 변수

 - e : 환경 변수 인자

int execlp(const char *path, const char *arg0, ... const char *argn, (char*) 0);

int execvp(const char *path, char *const argv[]);

 - 환경변수의  $PATH(path)를 참조하여 실행. exec함수를 하기 전에 환경변수를 미리 넣어 실행.

 - path : 경로 정보가 없는 실행 파일 이름.


exec 호출 후 프로세스의 속성.

FD_CLOEXEC 세트되지 않은 경우 : open된 file descriptor 유지.

시그널 처리는 초기 설정으로 복원되지만 무시되고 있던 시그널은 계속 무시.