우선 execl함수와 execv함수의 사용법을 알려드릴게요.
int execl(const char *path, const char *arg0, ... , const char *argn, NULL);
int execv(const char *path, char *const argv[]);
대충이렇습니다.
위 두 함수는 fork로 차일드 프로세스를 만든 후 그 프로세스를 새로운 독립적인 프로세스로 만들어 주는 역할을 합니다.
따라서 그것은 우리가 명령프롬프트에 실행파일을 실행하는 것과 비슷한 이치입니다.
예를 들어
/...> gcc -c test.c
이런 명령을 내렸다고 합시다. 그럼
argc는 3이 되고 arg0이 가리키는 놈은 gcc
arg1이 가리키는 놈은 -c
arg2가 가리키는 놈은 test.c
입니다.
이런식으로 매개변수가 입력되게 됩니다.
실제 프로그램 상에서도 마찬가지로 위와 같이 할 수 있습니다.
fork를 통해 생성된 차일드 프로세스의 코드안에
execl("/경로/gcc", "/경로/gcc", "-c", "test.c");
이런식으로...
또는
char *argv[]= { "/경로/gcc", "-c", "test.c"};
이런 식으로 설정해 주시고,
execv(argv[0], argv);
의 문장을 집어 넣어주면
새로운 독립된 프로세스가 한개 탄생하게 되는 것입니다.
결과는 같습니다. 다만 들어가는 인자가 무엇인가만 다른 뿐입니다. 자신이 편하다고 생각하는 방법을 사용하는 겁니다 ^^.
--------------------------------------------------------------
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
유닉스함수. exec,execv,execl계열 함수 7개의 기능 (0) | 2009.05.23 |
---|---|
ececl과 execv의 차이 (0) | 2009.05.23 |
execl함수와 ∴ execv함수의 사용법 (0) | 2009.05.23 |
feof(),,, 마지막 줄 두 번 안 읽게 하는 처리 (0) | 2009.05.23 |
23 프로세스 (0) | 2009.05.22 |