운영체제 첫번째 숙제

  1. 시스템 콜을 이용하여 기본적인 쉘 프로그램 작성하기

    가. 목적
    기본적인 기능을 수행하는 쉘 프로그램 구현

    나. 사용 시스템 콜
    fork, exec or execve, pipe, wait 등

    다. 구현 기능
    a. 기본적인 명령어 수행 기능
    realtime> ./my_shell
    my_shell>> ls
    a.out test1.c test2.c test3.c

    b. 백그라운드 기능 구현
    my_shell>> a.out&
    my_shell>> ps -aux
    =========== Output ==============


    a.out
    =================================

    c. 리다이렉션 기능
    my_shell>> ls -alF > dir.txt
    my_shell>> ls /bin >> dir.txt
    my_shell>> cat dir.txt
    =========== Output ===============
    ls -alF 결과
    +
    ls /bin 결과
    ==================================

    d. 파이프 기능
    my_shell>> ls | grep test
    =========== Output ===============
    test1.c test2.c test3.c
    ==================================

    e. 파일 이름 자동완성 기능
    (Tab키를 누르면 현재 까지 입력된 파일명을 기반으로 현재 디렉토리 내에서
    일치하는 파일이 있으면 자동으로 입력해준다.
    복수 개의 파일이 있으면 같은 부분까지만 자동으로 입력해주고
    복수개의 해당 파일을 표시해 주기만 한다.

– 현재 디렉토리의 파일에만 적용)
my_shell>> ls
a.out test1.c test2.c test3.c
my_shell>> a -> 이 상태에서 Tab 키를 누르면 아래의 형태로 자동 입력됨 – 물론 명령어 입력은
되지 않은 상태
my_shell>> a.out
my_shell>> t -> 이상태에서 Tab 키를 누르면 아래의 형태로 같은 부분까지 자동 입력되고, 복수개의 파일이 표시됨
my_shell>> test
test1.c test2.c test3.c

f. 명령 저장 기능
이전에 사용한 명령어 행을 방향키 위 아래 버튼을 사용하여 직접 입력하지 않고도
편하게 사용할 수 있도록 한다.
my_shell>> ls -alF
.
.
my_shell>> ps -aux
.
.
my_shell>>  -> 이 상태에서 방향키 위 버튼을 누르면 아래의 형태로 나타남
my_shell>> ps -aux -> 한 번더 방향키 위 버튼을 누르면 아래의 형태로 나타남
my_shell>> ls -alF -> 여기에서 방향키 아래 버튼을 누르면 아래의 형태로 나타남
my_shell>> ps -aux
(명령 저장 갯수는 80개 까지로 한다.)

라. 참조 문서
Advanced Programming in the UNIXEnvironment -Stevens-
UNIX SYSTEM Programming – 홍릉 출판사 –
및.. 기타 관련서적

마. 기간
가반 24일(금)까지
나반 23일(목)까지
다반 24일(금)까지

=== 주의사항 ==
– 처음에 공지 했던 Coding Style을 만족할것
– 전체적인 프로그램 구조에 관한 설명이 있어야함

여유

아침에 일어나 사이버 강좌 레포트를 1시간만에 완료하고,
다음주 일요일까지 제출해야하는 정보검색 과제를 시작했다.

지난번 5번째 까지 가는 압박이 있었기에,
이번에는 빨리 끝내버리고 싶었다.

주어진 디렉토리에 있는 문서 파일에서 문서를 구분하고,
offset과 length를 뽑는 과제였는데, 일단 디렉토리의
파일 목록을 뽑아와야 해서, 뭘 보고 하나 고민하다가
Advanced Linux Programming Ebook을 뒤져서,
금방 해결 할 수 있었다.

한번에 100점을 받고 나니, 얼씨구나 지화자 좋다.
내 앞에 주어진 과제들이 없기에 내가 하고 싶었던 것을 할 때다!

버그는 사소한 곳에…

정보검색과제를 하면서 5번 안에 제출해야 감점이 없는데
오늘은 한번의 기회 남겨놓고 벼랑끝에 몰렸다…

과제의 요점은 html문서를 요청해서 저장하고,
a 링크로 연결된 URL을 뽑아오는 것이였는데,
URL뽑는데만 혈안이 되어서는, 없는 오류만 계속 찾고 있었다.

결국 오류는 아주 사소한 곳에 있었다.
당연히 완벽하다고 생각했던 부분에…

recv로 요청한 웹페이지를 받을 때 버퍼 사이즈에 꽉 채워서
받고는 그걸 파일에 기록했으니 널문자를 언제 만날지 기약이
없는 상태였다. 문제는 뒤에 쓰레기 문자가 들어가도 파일사이즈가
맞는 결과와 동일했고 외형상으로도 알수가 없었기에 전혀 의심을 못했다.

핑계지만, 자바였다면 발생하지 않았을 버그…
C언어 문자열의 처리에서 늘 null문자를 신경써야 한다는 사실을…
다시 한번 명심!

미용실에서

면접볼때 너무 짧은 머리를 하고 있으면 고루해보일 것 같고,
내 인상이 너무 강해서, 짧은 머리는 더 인상이 안좋아보일까봐
여름내내 일부러 머리를 길러왔는데…

이제는 너무 길어져서, 귀찮아서 확 짧게 자르고,
중딩머리로 돌아가려 했으나…
어머니의 강력한 반대의 부딛히고,
잘 알고 계시는 실력 좋은 미용실에 가게 되었다.

(이전에 동생은 거기 갔다가 완전 연예인 머리가 되어 왔음)

나는 튀고 화려한 건 싫고, 그냥 무난한 갈색으로 염색하고 머리를
자르기만 했다. 머리를 자르는 것도 전에는 무조건 상고머리만
했는데 이번에는 원장님(?)이 뒷머리랑 뭐 이렇게 저렇게 길러보라고
알아서 잘라주셨는데, 덮수룩 하지 않아서 맘에 들었다.

같이 간 어머니와 볼링치시는 친구분이 차에서 말씀하시는 걸
들었는데, 말로만 듣던 신내림을 받은 분이였다…. @.@
꿈에서 보았던 주변인의 이야기가 현실로 나타난다고 하셨다.
내림굿은 받지 않으셨다고… 그래서 이래저래 고생도 많이 하셨다는…

나에겐 술과 여자만 조심하면 성공할 것 이라고 말씀해주셨다. ㅎㅎ

미용실에서 나와서 어머니 볼링클럽 사람들 있는 곳에서
닭을 먹고 집에 돌아왔다. 정보검색 과제가 눈에 밟힌다 ㅡ.ㅡ;;