exec계열 함수 하나의 프로세스가 실행되다가 다른 프로세스를 생성하여 실행시키고 자신은 종료시키는 함수
execl계열 함수와 execv계열 함수로 로 분류할 수 있다.
-----------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
main()
{
printf("Running ls with execl\n");
/* 첫 번째 인수가 경로 이름이고 명령라인 인수들을 나열.
(char *)0은 인수가 더 이상 없음을 의미 */
execl("/bin/ls", "ls", (char *)0);
/* 이후 문장은 실행되지 않음 */
printf("execl failed to run ls\n");
exit(0);
}
-----------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
main()
{
printf("Running ls with execlp\n");
/* 첫 번째 인수가 파일 이름이고 명령라인 인수들을 나열.
프로그램 ls는 PATH 환경 변수에 의해 지정된 디렉토리에서 찾음 */
execlp("ls", "ls", (char *)0);
/* 이후 문장은 실행되지 않음 */
printf("execlp failed to run ls\n");
exit(0);
}
-----------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
/* 환경 변수를 설정 */
char *envp[] = {"USER=jkim", "PATH=/tmp", (char *)0};
main()
{
printf("Running ls with execle\n");
/* 첫 번째 인수가 경로 이름이고 명령라인 인수들을 나열. 환경 변수 넘겨 줌 */
execle("/bin/ls", "ls", (char *)0, envp);
/* 이후 문장은 실행되지 않음 */
printf("execle failed to run ls\n");
exit(0);
}
-----------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
main()
{
/* 인수 리스트를 내용으로 하는 문자열 배열 */
char *arg[] = {"ls", (char *)0};
printf("Running ls with execv\n");
/* 첫 번째 인수가 경로 이름이고 명령라인 인수는 인수들의 배열 */
execv("/bin/ls", arg);
printf("execv failed to run ls\n");
exit(0);
}
-----------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
main()
{
char *arg[] = {"ls", (char *)0};
printf("Running ls with execvp\n");
/* 첫 번째 인수가 파일 이름이고 명령라인 인수는 인수들의 배열.
프로그램 ls는 PATH 환경 변수에 의해 지정된 디렉토리에서 찾음 */
execvp("ls", arg);
printf("execvp failed to run ls\n");
exit(0);
}
-----------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
/* 환경 변수를 설정 */
char *envp[] = {"USER=jkim", "PATH=/tmp", (char *)0};
main()
{
char *arg[] = {"ls", (char *)0};
printf("Running ls with execve\n");
/* 첫 번째 인수가 경로 이름이고 명령라인 인수는 인수들의 배열. 환경 변수 넘겨 줌 */
execve("/bin/ls", arg, envp);
printf("execve failed to run ls\n");
exit(0);
}
-----------------------------------------------------------------------------------------------------
'EMBEDDED > SYSTEM Proc' 카테고리의 다른 글
[Process] 간단한 쉘 프로그램 (1) | 2012.07.13 |
---|---|
[Process] exec계열 함수에 관한 예제2 (1) | 2012.07.13 |
[Process] WEXITSTATUS(종료상태 메크로)에 관한 예제 (0) | 2012.07.13 |
[Process] waitpid() 함수에 관한 예제 (0) | 2012.07.13 |
[Process] wait()에 관한 예제 (0) | 2012.07.13 |