명령 라인에서 받아 들인 인수에 해당되는 프로그램을 실행 시키는 예제
#include <stdio.h>
#include <unistd.h>
main(int argc, char *argv[])
{
int i;
char *arg[argc];
printf("Running %s with execvp\n", argv[1]);
/* 명령라인에서 받아들인 인수들을 arg로 복사하는 부분으로
첫 번째 인수인 a.out은 제외 */
for (i=0; i<(argc-1); i++) {
arg[i]= argv[i+1];
}
/* 인수가 더 없음을 의미하는 문자 추가 */
arg[i] = (char *)0;
/* execvp를 이용해서 'ps -au' 명령어가 실행되도록 하는 부분으로,
argv[1]에는 'ps'가, arg[0]에는 'ps', arg[1]에는 '-au', 그리고 arg[2]에는 0이 저장 */
execvp(argv[1], arg);
printf("execvp failed to run %s\n", argv[1]);
exit(0);
}
[localhost@locahost]# a.out ps -au
----------------------------------------------------------------------------------------------------
전달 받은 환경변수를 출력하는 프로그램 실행하기
#include <stdio.h>
/* environ에 환경 변수 정보 저장 */
extern char **environ;
main(int argc, char *argv[])
{
char **env = environ;
printf("my environment variables are :\n");
while(*env)
printf("%s\n", *(env++));
exit(0);
}
----------------------------------------------------------------------------------------------------
위의 프로그램을 실행되게 하는 프로그램
#include <stdio.h>
#include <unistd.h>
/* 환경 변수 정보를 설정 */
char *envp[] = {"USER=jkim", "PATH=/tmp", (char *)0};
main()
{
char *arg[] = {"23_21", (char *)0}; /* 23_21은 새롭게 실행될 프로그램 이름 */
printf("Running %s with execve\n", arg[0]);
/* 23_21에 envp에 설정된 환경 정보를 전달 */
execve("./23_21", arg, envp);
printf("execve failed to run %s\n", arg[0]);
exit(0);
}
'EMBEDDED > SYSTEM Proc' 카테고리의 다른 글
[Process] system() 함수에 관한 예제 (0) | 2012.07.13 |
---|---|
[Process] 간단한 쉘 프로그램 (1) | 2012.07.13 |
[Process] exec계열 함수에 관한 예제1 (0) | 2012.07.13 |
[Process] WEXITSTATUS(종료상태 메크로)에 관한 예제 (0) | 2012.07.13 |
[Process] waitpid() 함수에 관한 예제 (0) | 2012.07.13 |