유저 쉘을 만들려고 합니다.

theyoung의 이미지

ㅠ,.ㅠ 약 2시간 동안 인터넷을 검색하고

해봤지만 유저가 직접 쉘을 만드는 것에 대해 나온

강좌나 소스를 구하기 ㅡㅡ;; 가 아니라 하나도 못구했습니다

ㅠ,.ㅠ 그냥 답답해서 여러분들의 정보를 알고자 합니다.

밑에 검색해보니 홍릉 출판사에서 나온 책에 관련 소스와

강좌가 있다고 하는데 무슨책인지 혹시 제목 아시는분 알려주심

감사하겠습니다. ^ㅁ^ 그리고 관련 소스 및 정보 알고 계신분

리플좀 ㅠ,.ㅠ 부탁드립니다. 정말 찾기 힘드네요.. 관련 사이트라도

외국 사이트도 좋습니다. 마지막으로 editline 라이브러리를 보면

된다는 답변을 본적이 있는데 제가 워낙 초보인지라

어떻게 보면 되는지 답변좀 부탁드립니다.

결론적으로 ㅠ,.ㅠ 쉘 만들고 싶어용 흑~ 좋은 하루되세요

불량청년의 이미지

APUE를 보시면 기본 골격이 나온 코드가 있습니다.

Advanced Programming in the UNIX Environment

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

etourist의 이미지

작은 크기의 쉘 소스코드를 받아서 직접 보시는 것도 좋을 듯.

전 예전에 이 책을 보고 도움을 많이 받았는데.
ROBBINS, Practical UNIX Programming, Prentice Hall, isbn:0134437063
http://kangcom.com/common/bookinfo/bookinfo.asp?sku=199612130005

아마 이 책의 후속 에디션이 나왔더군요. 사고 싶었지만 ... 참았는데.
ROBBINS, UNIX Systems Programming, Prentice Hall, isbn:0130424110
http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200307190003

참고할만한 프로젝트들이 있는데, 'Cracking Shells' 이라는 부분을 찾아서 읽어보시면 아마 원하시는 것을 얻을 수 있으리라 생각합니다.

그럼~

[url]http://ldk.sarang.net [/url]
"꿈이 있는 자는 흔들리지 않는다! "

권순선의 이미지

Linux Application Development 라는 책에도 쉘을 만드는 예제가 나옵니다. 참고하세요...

theyoung의 이미지

여러 답변 정말 감사드립니다. ^ㅁ^ 정말 큰 도움이 되었습니다. 좋은 공부가 될것 같습니다.
다시 한번 감사드립니다. ^ㅁ^

kjw2048의 이미지

예전에 시스템프로그래밍 과목에서 쉘만드는게 한학기 숙제였던게 기억나네요...
교재가 APUE 였다죠 :lol:

(-_-)/

saxboy의 이미지

소스는 읽기 버거울테니 원리만 아시면 어렵지 않게 만드시겠지요. 대충...

shell()
{
  printf("shell>> ")
  gets(buf)
  arglist = parse_arguments(buf)

  pid=fork()
  if ( child 이면 ) 
  {
      execv(arglist)
  }
  else
  {
  }
}

여기까지가 기본 쉘... 잘 작동하려면 waitpid() 처리나 여러가지 안전장치가 필요하겠고, dup(), pipe() 가 들어가면 파이프기능 지원. 간단한 랭귀지처리 루틴이 지원되면 shell script... :-)
여기에 tab 으로 auto-completion 같은 것을 지원하려면 GNU readline 사용... 뭐 이렇게 확장되면 되겠습니다.

역시나 바이블은 APUE 겠지요.

yanggak의 이미지

이거 숙제로 하느라 엄청 고생했던 기억이...--;

If you can dream it,
you can do it

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.