Redirection 구현에 관한 질문입니다.

Jdimension의 이미지

요즘 시스템 프로그래밍을 공부하고 있는데 워낙 프로그래밍 경험이 짧아서
(그 전에 지식이 짧지만;)

Redirection을 구현하는데 argument로 받은 내용을 어떻게 처리해야 할지 모르겠네요.

처음에는 스페이스 단위로 구분하면 되려나 했는데 생각해보니 파일명 다음에 스페이스 없이 그냥 >,< 붙여도 인식되는걸 알아내서 패닉상태입니다.

그래서 >나 <가 나올 때 까지 buffer의 index를 1씩 늘려가면서 새로운 char 배열에 집어넣는 방법을 쓸까 했는데 그렇게 되면 새로운 char 배열에 스페이스가 들어갈 경우 어떻게 제거해야 할지 모르겠더군요.

리눅스 소스 중에 이 redirection을 구현한 부분을 어디에서 볼 수 있을까요?

리눅스를 잡은 것 자체가 최근이라 아직 디렉토리 구조도 다 파악하지 못해서 애로사항이 꽃피는군요...

bw001730의 이미지

누가 그러든데
fgets로 읽는것이 아니라
fgetc로 읽어야 한다고 하네요

그리구
오토마타관련한 내용을 약간 읽어보시는것이 좋을듯
상태다이어그램인가 그려보시믄서
작업해보세요

리다이렉션관련한 소스는 역시 쉘소스가 가장 무난하지 않을까합니다.
제가 학교다닐때 읽었던 원서중에
practical unix programming 인가하는 책에 쉘소스를 설명해주고 있습니다.

또 최근에 한글판 책으로
Unix Sysstem Programming Kay A. Robbins외 공저
라고 되어 있는 책이 있는데요
practical unix programming 책의 후속판인거 같습니다.
마찬가지로 쉘소스가 있습니다. 번역은 괜찬은듯...합니다.

쉘만들고 나면 실력이 부쩍늘었다는 생각이 들거 같네요[/code]

pynoos의 이미지

layer를 둘로 나누세요.
argument를 파싱하는 부분과 파싱된 것을 수행하는 부분으로..

캐릭터하나가 들어올때마다 state diagram이 어떻게 변할지를 잘 그려서 argument parsing이 완벽해야만 수행하는데 문제가 없으리라 봅니다.

feanor의 이미지

명령줄 파싱만이라면 flex 같은 도구를 쓰는 것이 가장 빠르지 않을까 싶습니다만...

--feanor

댓글 달기

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