게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
리눅스 child process와 execvp, 그리고 export ?
게시물ID : programmer_14470짧은주소 복사하기
작성자 : 울바보사랑해
추천 : 0
조회수 : 460회
댓글수 : 2개
등록시간 : 2015/11/17 22:47:48
옵션
  • 본인삭제금지
제가 지금 실행중인 파일은 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);
}
 
1.jpg

근데 결과를 보아 KST 에서 PST 로 시간대가 변경되었음에도 불구하고 cannot ~ 하는 에러 메시지가 출력되네요.
분명히 argv도 제대로 들어갔는데 여기에서 왜 execvp가 실행되지 않고  -1를 리턴하는 걸까요?
 
혹시 export가 내장명령어이기 때문에 execvp가 실행이 안되는건가요?
궁금합니다.ㅜㅜ
 
자식 프로세스가 생성되면 쉘이 따로 또 하나 생기는 것이 아닌가 했는데 생각할수록 헷갈려서요..
죄송합니다.
 
 
출처 본인 그리고 책 <Understanding Unix/Linux Programming> - Bruce Molay, Harvard University
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호