Ncurses로 쉘을 표현 하고 싶은데요..

xog2000의 이미지

Ncurses 라이브러리를 이용하여

콘솔에 나타나는 화면을 그대로 표현하고 싶습니다.

지금 만들고 있는 프로그램이

=================================

=================================
root@localdomain:~#

=================================

=================================

이렇게 나타나도록 하려고 합니다.

위아래 상자나 가운데 문제는 해결 했는데

정작 콘솔 화면을 구현하지 못했습니다.

ncurses에 예제로 나온 프로그램 같은 경우는

ls 류의 명령을 사용하였을 때 단순히 뿌려주기 때문에

기본적인 색상 지원이 되지 않는것 같습니다.

이 문제를 어떤 방식으로 해결해야 할까요?

답변 부탁드립니다.

PS. 첨부파일로 프로그램의 형식을 올려봤습니다.
가운데 콘솔 구현방법에 대한 도움을 얻고 싶습니다.
질문과 마찮가지로 단순한 재지향을 이용한 출력이 아닌 방법이 있었으면 합니다.
재지향 해서 문자열만 받아오면 보통 터미날 상의 글자색등이 사라져 있을
테니까요.

File attachments: 
첨부파일 크기
Image icon MAINAB.png16.22 KB
eungkyu의 이미지

screen이 구현하려는 것과 비슷한 것 같습니다. 한 번 연구해보시면 도움이 될 것 같습니다.

xog2000의 이미지

screen이라는 것이 무엇을 의미 하는 건가요?

----------------------------------------
내가사는세상-Kernelist : http://blog.naver.com/xog2000
"모르는 것은 어리석은 것이 아니다.
어리석은 것은 알려는 의지가 없음을 말한다."

eungkyu의 이미지

http://www.gnu.org/software/screen/

설치는 각 리눅스 배포판 패키지로 할 수 있을 것입니다.

curses의 이미지


ls | grep 하면 모든 색상이 날아가겠지요?

그런데, 직접 pipe로 읽어들이면 어떻게 될까요? 안해봐서 모르겠네요.

ls가 현재의 터미널 설정과 정보를 넘겨서 실행할 수 있다고 보구요.
ls는 충실하게 명령을 수행하겠지요?

그냥 ls가 자체적으로 컬러값을 주지 않는 것인지? 미리확인을 해보시고 접근을 해도 되겠네요.

하여간, system()이나 이런 것 쓰지 마시고, system의 구현이다. popen()류를 직접 구현하는 것이 답이지 않을까고 생각합니다. environment 변수를 넘기는 것들도 제어를 해야할 것이구요.

la9527의 이미지

윗분과 같이 screen 의 소스를 보고 참조를 해도 될것 같은데,
다음 내용이 참조하실때 조금 도움이 될듯하여 써봅니다.

printf ("[\033[01;36m SUCCESS \033[0m]");


위와 같이 실행하면 [SUCCESS]가 나오게 되는데 SUCCESS 가 녹색으로 표시 될것입니다.

# tty 
/dev/pts/5

또 위와 같이 실행하면 자신의 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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.