exec 함수군은 path나 file에 지정한 명령이나 실행 파일을 실행한다. 이때 arg나 envp로 시작하는 인자를 path나 file에 지정한 파일의 main 함수에 전달한다. 각 함수별로 경로명까지 지정하거나 단순히 실행 파일명만 지정하는 등 차이가 있고 인자를 전달하는 형태에도 차이가 있다.
#include<unistd.h> |
int execl(const char *path, const char *arg0, ..., const char *argn, (char *)0); |
path에 지정한 경로명의 파일을 실행하며 arg0~argn을 인자로 전달한다. 관례적으로 arg0에는 실행 파일명을 지정한다. execl함수의 마지막 인자로는 인자의 끝을 의미하는 NULL 포인터((char*)0)를 지정해야 한다. path에 지정하는 경로명은 절대 경로나 상대 경로 모두 사용할 수 있다. |
int execv(const char *path, char *const argv[]); |
path에 지정한 경로명에 있는 파일을 실행하며 argv를 인자로 전달한다. argv는 포인터 배열이다. 이 배열의 마지막에는 NULL 문자열을 저장해야 한다. |
int execle(const char *path, const char *arg0, ..., const char *argn, (char *)0, char *const envp[]); |
path에 지정한 경로명의 파일을 실행하며 arg0~argn과 envp를 인자로 전달한다. envp에는 새로운 환경 변수를 설정할 수 있다. arg0~argn을 포인터로 지정하므로, 마지막 값은 NULL 포인터로 지정해야 한다. Envp는 포인터 배열이다. 이 배열의 마지막에는 NULL 문자열을 저장해야 한다. |
int execve(const char *path, char *const argv[], char *const envp[]); |
path에 지정한 경로명의 파일을 실행하며 argv, envp를 인자로 전달한다. argv와 envp는 포인터 배열이다. 이 배열의 마지막에는 NULL 문자열을 저장해야 한다. |
int execlp(const char *file, const char *arg0, ..., const char *argn, (char *)0); |
file에 지정한 파일을 실행하며 arg0~argn만 인자로 전달한다. 파일은 이 함수를 호출한 프로세스의 검색 경로(환경 변수 PATH에 정의된 경로)에서 찾는다. arg0~argn은 포인터로 지정한다. execl 함수의 마지막 인자는 NULL 포인터로 지정해야 한다. |
int execvp(const char *file, char *const argv[]); |
file에 지정한 파일을 실행하며 argv를 인자로 전달한다. argv는 포인터 배열이다. 이 배열의 마지막에는 NULL 문자열을 저장해야 한다. |
http://bestheroz.blog.me/116479172
'Programming Language > c언어' 카테고리의 다른 글
[펌] 우분투64 bit 머신 inet_ntoa 함수에서 segment fault ? (0) | 2012.12.01 |
---|---|
C언어 메모리 구조 (0) | 2011.03.02 |
헝가리안 표기법의 장단점 (0) | 2010.08.26 |
[스크랩]c 배열 초기화 (0) | 2010.08.26 |
[스크랩] xor ^ (0) | 2010.01.25 |