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