#include <unistd.h> int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, ..., char * const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); The functions execlp() and execvp() will duplicate the actions of the shell in searching for an executable file if the specified filename does not contain a slash (/) character. The search path is the path specified in the environ- ment by the PATH variable. If this variable isn’t specified, the default path ‘‘:/bin:/usr/bin’’ is used. In addi- tion, certain errors are treated specially. [출처 : man page] |
execl의 경우에는 path가 들어 가는데 arg에서 문제가 생긴다.
execl은 잠시 잊고 잠시 C언어로 돌아가서 main()의 프로토 타입을 생각해보자
int void(int argc, char **argv) |
argv[0]은 실행한 파일의 이름이 argv[1] 부터 인자가 넘어 오지 않았던가!
다시 execl로 돌아와서
int execl(const char *path, const char *arg, ...);
path에서는 파일 이름이 포함 된 경로를 적어주고, arg[0]에는 파일 이름 arg[1] 부터는 인자를 넘겨 주면 된다.
간단한 예를 들자면
execl("/bin/ls","ls","-al",0); |
마지막의 0은 '\0' == NULL 이다.
[참고 : http://kldp.org/node/1548]
'Linux' 카테고리의 다른 글
쉘 스크립트 명령어 . (meaning of dot in sheel script) (0) | 2008.12.18 |
---|---|
파일 존재 유무 확인하기(how to check existence of file on C,linux) (2) | 2008.12.16 |
fork : Not Enough Memory (2) | 2008.12.08 |
mkfs - ext2 & ext3 (4) | 2008.11.21 |
SRM - Secure RM (0) | 2008.11.10 |