제가 지금 실행중인 파일은 smsh라는 자체 쉘로
배시쉘과 같은 기능을 하도록 되어있습니다.
그런데 내장명령어 export를 사용해 환경변수 TZ를 바꾸다가 에러가 떠서 질문드립니다.
fork()함수를 통해서 자식 프로세스를 생성했습니다.(pid==0인 조건문으로 들어감으로보아)
원래 기준시간 : KST
입력값:
TZ=PST8PDT
export TZ
else if(pid == 0){
execvp(argv[0], argv); //argv[0] = TZ, argv[1] = PST8PDT, argv[2] = \0
perror("cannot execute command");
exit(1);
}
근데 결과를 보아 KST 에서 PST 로 시간대가 변경되었음에도 불구하고 cannot ~ 하는 에러 메시지가 출력되네요.
분명히 argv도 제대로 들어갔는데 여기에서 왜 execvp가 실행되지 않고 -1를 리턴하는 걸까요?
혹시 export가 내장명령어이기 때문에 execvp가 실행이 안되는건가요?
궁금합니다.ㅜㅜ
자식 프로세스가 생성되면 쉘이 따로 또 하나 생기는 것이 아닌가 했는데 생각할수록 헷갈려서요..
죄송합니다.
출처 |
본인 그리고 책 <Understanding Unix/Linux Programming> - Bruce Molay, Harvard University |