[질문] 셀에서 cd 명령어와 비슷한 역할을 하는 프로그램...
글쓴이: pray4shoo / 작성시간: 토, 2005/10/08 - 7:54오후
안녕하세요.. 시스템 프로그래밍을 공부하는 학생인데요..
리눅스 셀에서 cd 명령어와 비슷한 역할을 하는 프로그램을 만들려고 합니다.
다른 여러가지 기능들도 있겠지만 정작 문제가 되는게..
system 함수중에 chdir로 디렉토리를 바꾸더라도 현재 실행중인 프로세스
에만 적용이 되고.. 그 프로세스가 종료되면.. 결국 변하는건 아무것도 없다는..
예를 들어서 제가 test라는 프로그램을 만들었습니다.
물론 내부적으론 chdir함수를 사용했구요..
그리고 셀에서 $test /bin 하더라도 그 프로그램을 실행했던 그 디렉토리 상태
그대로 란 거죠..
여기저기 검색도 해보고 책도 읽어보고 했지만 잘 모르겠네요...
clone라는 함수를 이용해서 부모프로세스와 자식프로세스의 메모리 공간,파일시스템등을 공유할수 있는 방법이 있다고 들은것도 같은데.. 어떻게 사용해야 할지를 모르는.ㅡ.ㅡ;;
아니면 자식 프로세스에서 부모프로세스의 어떤 기능을 이용할수 있는 방법같은건 없을까요? test에서 부모 셀의 cd를 이용할수 있는 방법....
어렵네요...^^;;;
도와주세요..ㅠ.ㅠ
Forums:
shell도 알고 보면 마찬가지입니다.shell도 다른 프로그램과 마
shell도 알고 보면 마찬가지입니다.
shell도 다른 프로그램과 마찬가지로 하나의 프로세스이며, 실행되는 동안에는 여러 디렉토리로 옮겨 다니지만 종료되면 변한 건 없습니다.
cd는 다른 프로그램이 아니라 shell 내부 명령어라는 사실을 잊지 마세요. 다른 프로세스를 생성하여 디렉토리를 바꾼 게 아니라는 점 말입니다.
-----
http://monpetit.posterous.com/
http://monpetit.tistory.com/
결론부터 말하면 없습니다.그렇다고 절망?하지 마시고, 한가지 방법
결론부터 말하면 없습니다.
그렇다고 절망?하지 마시고, 한가지 방법이 있긴 합니다. GNU mc가 이용하는 방법인데, 먼저 shell에서 mc는 alias로 다음과 같이 정의되어 있습니다.
alias mc='. $MC_DIR/bin/mc-wrapper.sh'
즉, 사용자가 mc를 실행하면, 현재 shell이 mc-wrapper.sh를 읽어서 실행합니다. (child proc을 만들어 실행하는 것이 아닙니다.) 이 때, mc-wrapper.sh는 특정 파일 이름을 /usr/bin/mc에게 전달해 주고, 이 mc는 바꾸고자 하는 디렉토리를 그 파일에 저장합니다. 그리고 mc가 끝나면, mc-wrapper.sh가 그 내용을 읽어서 디렉토리를 바꿉니다. 자세한 것은 mc를 설치하고 그 소스를 보시면 알 수 있습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기