Ncurses로 쉘을 표현 하고 싶은데요..
글쓴이: xog2000 / 작성시간: 화, 2007/09/11 - 9:23오전
Ncurses 라이브러리를 이용하여
콘솔에 나타나는 화면을 그대로 표현하고 싶습니다.
지금 만들고 있는 프로그램이
=================================
=================================
root@localdomain:~#
=================================
=================================
이렇게 나타나도록 하려고 합니다.
위아래 상자나 가운데 문제는 해결 했는데
정작 콘솔 화면을 구현하지 못했습니다.
ncurses에 예제로 나온 프로그램 같은 경우는
ls 류의 명령을 사용하였을 때 단순히 뿌려주기 때문에
기본적인 색상 지원이 되지 않는것 같습니다.
이 문제를 어떤 방식으로 해결해야 할까요?
답변 부탁드립니다.
PS. 첨부파일로 프로그램의 형식을 올려봤습니다.
가운데 콘솔 구현방법에 대한 도움을 얻고 싶습니다.
질문과 마찮가지로 단순한 재지향을 이용한 출력이 아닌 방법이 있었으면 합니다.
재지향 해서 문자열만 받아오면 보통 터미날 상의 글자색등이 사라져 있을
테니까요.
File attachments:
첨부 | 파일 크기 |
---|---|
![]() | 16.22 KB |
Forums:
screen이 구현하려는
screen이 구현하려는 것과 비슷한 것 같습니다. 한 번 연구해보시면 도움이 될 것 같습니다.
screen이라함은?
screen이라는 것이 무엇을 의미 하는 건가요?
----------------------------------------
내가사는세상-Kernelist : http://blog.naver.com/xog2000
"모르는 것은 어리석은 것이 아니다.
어리석은 것은 알려는 의지가 없음을 말한다."
http://www.gnu.org/software/s
http://www.gnu.org/software/screen/
설치는 각 리눅스 배포판 패키지로 할 수 있을 것입니다.
color가 고민이라면?
ls | grep 하면 모든 색상이 날아가겠지요?
그런데, 직접 pipe로 읽어들이면 어떻게 될까요? 안해봐서 모르겠네요.
ls가 현재의 터미널 설정과 정보를 넘겨서 실행할 수 있다고 보구요.
ls는 충실하게 명령을 수행하겠지요?
그냥 ls가 자체적으로 컬러값을 주지 않는 것인지? 미리확인을 해보시고 접근을 해도 되겠네요.
하여간, system()이나 이런 것 쓰지 마시고, system의 구현이다. popen()류를 직접 구현하는 것이 답이지 않을까고 생각합니다. environment 변수를 넘기는 것들도 제어를 해야할 것이구요.
윗분과 같이 screen 의
윗분과 같이 screen 의 소스를 보고 참조를 해도 될것 같은데,
다음 내용이 참조하실때 조금 도움이 될듯하여 써봅니다.
위와 같이 실행하면 [SUCCESS]가 나오게 되는데 SUCCESS 가 녹색으로 표시 될것입니다.
또 위와 같이 실행하면 자신의 tty 정보를 알수 있는데,
이 tty 를 새로 생성하여 내용들을 가로채고, 나름대로 내용을 파싱해서
ncurses의 설정에 맞게 색상을 다시 화면에 뿌려주면 나름대로 위의 생각이 반영되지 않을까 합니다.
LinM의 Ctrl+O 기능(서브쉘)의 소스를 참조하시면 어느정도 도움이 될듯 싶습니다.
http://kldp.net/plugins/scmsvn/viewcvs.php/trunk/mls2/src/ncurses/subshell.cpp?rev=1107&root=mls&view=markup
https://github.com/la9527
댓글 달기