ostep-utility : wcat 명령어 구현
2022. 3. 11. 01:42ㆍ컴퓨터 공학/운영체제
반응형
본 티스토리 블로그는 PC 환경에 최적화되어 있습니다.
모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.
운영체제 명령어 cat을 구현해 보도록 하겠습니다.
(본 사이트에서는 wcat이라고 이름을 지었으므로 이 이름으로 따라가겠습니다.)
해당 명령어가 처리해야 할 기능과 예외 처리 부분은 아래 링크에 모두 설명되어 있으며, unix에서 구현된 명령어와는 다른 부분이 존재합니다.
위 깃허브에서 제공하는 test case 검사를 모두 통과해야 정확히 구현된 것입니다.
1) ./wcat tests/1.in
입력된 파일 경로를 인자로 접근하여 기본 출력이 가능한지 확인하는 케이스입니다.
2) ./wcat tests/2.in.a tests/2.in.b
다중 파일 경로가 입력되어도 정상적으로 처리가 가능한지 확인하는 케이스입니다.
3) ./wcat tests/3.in
해당 파일 내부가 공백이어도 정상적인 처리가 가능한지 확인합니다.
4) ./wcat
아무 인자가 없이 명령어만 실행했을때의 예외 처리가 되어있는지를 확인하는 부분입니다.
5) ./wcat tests/5.in
파일에 저장된 정보가 매우 길어도 정상적으로 표준 출력 처리가 되는지 확인하는 케이스입니다.
6) ./wcat tests/6.in
존재하지 않는 경로의 파일을 접근할 경우 직접 에러코드를 선언하고 출력할 수 있는지 확인하는 부분입니다.
7) ./wcat tests/7a.in tests/7b.in tests/7c.in tests/7d.in
다중파일 출력이 정상적으로 이루어지는지 확인하는 최종 루틴입니다.
아래는 각각의 부분을 고려해서 제작된 코드입니다.
#include <stdio.h>
#include <errno.h>
#define MAX_LEN 256
int main(int argc, char* argv[]){
FILE* FD;
char contents[MAX_LEN];
//1. if no input argument in main
if(argc == 1)
return 0;
for(int i=1; i < argc; i++){
FD = fopen(argv[i], "r");
if(FD == NULL){
//2. error num : ENOENT(2) : no such file or directory.
if(errno == ENOENT)
printf("wcat: cannot open file\n");
return 1;
}
while( !feof(FD)){ //3. End-of-File indicator
if(!fgets(contents, MAX_LEN , FD))
break;
printf("%s", contents);
}
fclose(FD);
}
return 0;
}
- 성공 화면
반응형
'컴퓨터 공학 > 운영체제' 카테고리의 다른 글
ostep initial-xv6 - Syscall 추가하기 (2) | 2022.05.13 |
---|---|
ostep project - process shell(쉘 구현) (0) | 2022.04.30 |
ostep-reverse : reverse 명령어 구현 (0) | 2022.04.28 |
1. Operation System OT (0) | 2020.02.12 |