exec()

exec 함수는 exec 계열 함수를 총괄하여 지칭하는 말이다. 이 함수는 프로세스가 하던 작업을 종료하고 다른 작업을 하도록 전환할 때 사용한다. exec 함수를 호출하면 현재 실행 중이던 프로세스의 이미지를 프로세스의 이미지로 교체한다. 즉, 현재 실행중인 프로세스의 메모리를 다른 프로세스를 위해 사용한다. 따라서 현재 실행중인 프로세스는 종료되며 exec 함수의 인자로 받은 새로운 프로세스가 실행되기 시작한다.





































함수 이름 프로그램 지정 명령라인 인수 함수 설명
execl 디렉토리와 파일 이름이 합친 전체 이름 인수 리스트 환경 설정 불가
execlp 파일 이름 인수 리스트 환경 설정 불가
execle 디렉토리와 파일 이름이 합친 전체 이름 인수 리스트 환경 설정 가능
execv 디렉토리와 파일 이름이 합친 전체 이름 인수 배열 환경 설정 불가
execvp 파일 이름 인수 배열 환경 설정 불가
excve 전제 경로 명 인수 배열 환경 설정 가능

exec 뒤의 문자 l, v, p, e의 의미는 각각 다음과 같다.

l : list 형태의 인자를 취한다는 의미
v : vector 형태의 인자를 취한다는 의미
p : 명령을 PATH에서 검색하겠다는 의미
e : 환경 변수 인자를 받는 함수임을 의미


















헤더 unistd.h
형태 int execl( const char *path, const char *arg, …);














인수 char *path 실행 파일의 디레토리 포함 전체 파일 명
const char *arg 인수 목록
반환 int 실패일 때만 -1





예제


#include <stdio.h>
#include <unistd.h>

int main()
{
execl( “/bin/ls”, “/bin/ls”, “-al”, “/tmp”, (char *)0);

printf( “이 메시지가 보이면 지정된 프로그램이
없거나 어떤 문제로 실행되지 못한 것입니다.n”);
}

]$ ./a.out
합계 32
drwxrwxrwt 6 root root 4096 9월 30 05:47 .
drwxr-xr-x 24 root root 4096 9월 29 21:20 ..
srwxrwxr-x 1 jwjw jwjw 0 9월 13 14:39 process_b
srwxrwxr-x 1 jwjw jwjw 0 9월 14 08:34 uds_a
srwxrwxr-x 1 jwjw jwjw 0 9월 14 08:36 uds_b
]$

참고사이트 : http://proneer.tistory.com/entry/exec
                  http://forum.falinux.com/zbxe/?mid=C_LIB&search_target=title&search_keyword=exec&document_srl=408554&listStyle=&cpage=

Leave a Reply