Projects - OLD‎ > ‎

Homewrok #3

Advanced System Programming

By Suntae Hwang

Fall Semester

Homework #3

BBS Shell을 작성하시오.

BBS Shell의 동작
1. BBS Shell은 다음과 같은 명령을 실행할 수 있다.
 명령단축명령어처리방법 설명 
LIST L fork / exec.../usr/local/bin/LIST 명령을 호출한다. 
READ 번호 fork / exec... /usr/local/bin/READ 명령을 호출한다. 
WRITE  W fork / exec... 자신의 BBS_HOME/bin/WRITE 명령을 호출한다. 
(Homework #1 에서 작성한 프로그램을 호출한다.)
DELETE D fork / exec... 자신의 BBS_HOME/bin/DELETE 명령을 호출한다.
(Homework #1 에서 작성한 프로그램을 호출한다.) 
MKBBS 학생이 정하기 fork / exec... 자신의 BBS_HOME/bin/MKBBS 명령을 호출한다.
(Homework #2 에서 작성한 프로그램을 호출한다.)            
DELBBS  D fork / exec... 자신의 BBS_HOME/bin/DELBBS 명령을 호출한다.
(Homework #2 에서 작성한 프로그램을 호출한다.)
LSBBS  L fork / exec... /usr/local/bin/LSBBS 명령을 호출한다. 
GOBBS  번호 Shell 내부 처리위의 LIST~LSBBS가 동작할 수 있도록 CWD를 변경한다. 
이명령은 LSBBS를 통해 목록에 나타난 BBS의 번호로 이동하는 명령이다.
이동 후, 게시판일 경우 LSBBS 혹은 LIST 명령이 자동으로 호출되어야만 한다.
UPBBS 학생이 정하기  Shell 내부 처리위의 LIST~LSBBS가 동작할 수 있도록 CWD를 변경한다.
이명령은 상위 BBS로 이동하는 명령이다.
이동 후, LSBBS 가 자동으로 호출되어야만 한다.
TOP 학생이 정하기  Shell 내부 처리 최상위 BBS로 이동하는 명령이다.
이동 후, LSBBS 가 자동으로 호출되어야만 한다. 
BACK 학생이 정하기  Shell 내부 처리 이전에 있었던 BBS로 이동하는 명령이다.
이동 후, LSBBS 혹은 LIST 명령이 자동으로 호출되어야만 한다.
만약 이전에 방문한 BBS가 없었다면, 다음과 같은 메시지를 출력해야 한다.
"현재 게시판이 처음 방문한 게시판 입니다." 

2 구현시 주의사항
  • LIST~LSBBS 명령은 CWD 환경 변수에 의해 동작한다. 따라서 BBS Shell에서 fork 할때에 CWD 를 변경하여 호출해야만한다.
  • LIST~LSBBS 명령은 exec... 할 때에는 환경변수를 전달하는 exec... 명령을 사용하는 것이 좋다.
  • GOBBS~BACK 명령은 Shell에서 fork 없이 직접 처리하는 명령이다.
  • Shell의 프롬프트는 다음과 같은 형태가 되도록 한다.
목록보기(L), 읽기(R), 쓰기(W) ...
자신이 정한 프롬프트 메시지> 
  • 위 프롬프트에서 프롬프트 전에 현재 게시판에 알맞은 도움말을 한줄에 보이도록 한다.
  • 잘못된 명령을 입력한 경우 다음과 같이 출력되도록 한다.
알 수 없는 명령입니다.
  • 단축 명령어의 처리, 단축명령은 현재 게시판의 상황에 맞게 동작해야 한다. 예를 들어 L의 경우 글이 있는 게시판(article.index가 있는 경우)에서는 LIST 가 호출되어야 하며, 게시판 목록이 있는 게시판(board.index만 있는 경우)에서는 LSBBS가 호출되어야 한다.
  • fork 가 반복적으로 호출되어 프로세스를 생성할 수 없는 상황을 일으키지 않도록 주의한다.
Comments