본문 바로가기

Linux

우선 execl함수와 execv함수의 사용법을 알려드릴게요.

우선 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);

의 문장을 집어 넣어주면



새로운 독립된 프로세스가 한개 탄생하게 되는 것입니다.



결과는 같습니다. 다만 들어가는 인자가 무엇인가만 다른 뿐입니다. 자신이 편하다고 생각하는 방법을 사용하는 겁니다 ^^.