80 likes | 276 Views
Linux System Programing. Ex)6-8,9,10 2009243137 고이토 기요타카. Exec 함수. 프로세스의 메모리 공간을 수행 가능한 파일로 대체 새로운 프로세스를 생성시키기 위해 사용하는 시스템 콜 함수 execl , execv , execlp , execle. Ex6-8. 시스템 환경 변수 테이블 포인터 선언. Extern char ** envirin ; main( argc , argv ) Int argc ; char * argv ; { char **p;
E N D
Linux System ProgramingLinux System Programing Ex)6-8,9,10 2009243137 고이토 기요타카
Exec함수 • 프로세스의 메모리 공간을 수행 가능한 파일로 대체 • 새로운 프로세스를 생성시키기 위해 사용하는 시스템 콜 함수 • execl, execv, execlp, execle..
Ex6-8 시스템 환경 변수 테이블 포인터 선언 Extern char **envirin; main(argc, argv) Intargc; char *argv; { char **p; int n; printf(“My input parameters(argv) are: \n”); for(n=0; n < argc; n++) printf(“ %2: ‘%s’\n”, n, argv[n]); printf(“\nMyenviroment variables are:\n”); for(p=environ; *p!=(char *) 0; P++) printf(“ %s\n”, *p); } 명령어 라인 인수를 모두 출력 시스템 환경 변수 모두 출력
Ex6-9 #include<stdio.h> main() { printf(“this is the orignal program\n”); execl(“./ex6-8”, ex6-8”, “parm1”, “parm2”, “parm3”,(char*)0); perror(“This line should never ger printed\n”); } Perror부분은 수행 되지 않고 execl( )호출에 의해 프로세스가 ex6-8로 대치.ex6-8이 실행을 종료하면 본래 프로그램으로 돌아가지 않고 프로세스가 종료된다.
Ex6-10 #include<stdio.h> main() { static char *nargv[] = { “ex6-8”, “parm1”, “parm2”, “parm3”, (char *)0}; printf(“this is the original porgram\n”); execv(“.\ex6-8”, nargv); Perror(“This line should never get printed\n”); } 기본적으로는 ex6-9과 마찬가지로 Perror부분은 수행 되지 않고 execv( )호출에 의해 프로세스가 ex6-8로 대치.ex6-8이 실행을 종료하면 본래 프로그램으로 돌아가지 않고 프로세스가 종료된다.