2020-06-14 기준으로 작성되었으며, 블로그 글 작성을 위해 조금 수정되었습니다.
실습문제 11.1~11.5 (교재 367P) 풀이
1) 문서 편집
gedit 혹은 vi 에디터를 사용하여 자기를 소개하는 글을 작성하시오. 작성한 파일(intro)에 대해서 다음 명령을 실행하시오.
우선 vi로 intro 파일을 만들었다. 이 파일에 대한 명령을 차례대로 실행해보면
1. cat intro
cat으로 문서를 볼 수 있다.
2. cat –n intro
cat에서 –n으로 옵션을 주면 번호순으로 문서를 볼 수 있다.
3. more intro
more은 긴 파일일 경우에 한 페이지씩 볼 수 있게 해준다.
4. tail intro
tail은 뒤에서부터 세서 출력한다.
5. tail –5 intro
그래서 –5를 할 경우에 뒤에서 5개의 줄만큼만 출력하는데 4줄밖에 안되서 이렇게 나온다.
-2를 할 경우 뒤에서 2줄만 나오는 것을 확인할 수 있다.
2) 프로그램 작성
입력으로 받은 텍스트를 줄의 길이에 따라 정렬하여 출력하는 C 프로그램을 작성하시오.
이 프로그램을 copy.c 파일을 사용하여 여러 개의 파일로 구성하시오.
우선 gedit letsort.c로 letsort.c를 만들어보았다.
설명하자면, 배열을 만들어 비교 후에 길이대로 출력하는 형식이다.
그리고 밑의 copy.c를 만들어서 파일을 복사 붙여넣기 할 수 있게 만들었다.
그리고 main.c에다가 letsort.c를 복사 붙여넣기하려면 밑의 방식으로 사용하면 된다.
그러면 main.c에 letsort.c의 내용이 그대로 들어간다.
3) 컴파일 및 실행
2번에서 작성한 프로그램을 컴파일하고 생성된 파일의 상태 정보를 확인하시오. 실행파일을 실행하시오.
파일의 상태 정보 확인
컴파일 후 실행을 해보면 이런 식으로 작동한다.
4) gdb 사용
(1) copy 함수에 정지점을 설정하고 프로그램을 실행시킨다.
우선 교재에 있는 copy와 다르기 때문에 다르게 진행했다.
이걸 실행하면 제대로 작동하지 않는다. fp1과 fp2가 파일을 그대로 복사해서 붙여넣기 때문이다. 그래서 교재에있는 copy.c를 기준으로 답을 적었다.
(2) 정지한 지점에서 copy 함수의 매개변수인 from과 to 의 값을 출력한다.
또한 원래 copy 함수대로였다면 from에는 복사하는 파일의 내용이 to에는 붙여 넣을 파일의 내용이 출력될 것이다.
(3) n(ext) 명령어를 사용하여 한 줄씩 실행시킨다.
(4) c(ontinue) 명령어를 사용하여 계속 실행하고 (2), (3) 과정을 반복한다.
한 줄씩 실행시키면 파일이 반복문으로 한 줄씩 옮기게 되어있기 때문에 (4)번의 내용처럼 과정을 반복한다면 한 줄씩 옮겨가는 것을 확인할 수 있을 것이다.
5) make 사용
(1) 2번에서 작성한 프로그램을 컴파일하기 위한 메이크파일을 작성하고 이를 이용하여 컴파일하시오.
make를 통해 프로그램들을 자동으로 컴파일 하였다.
(2) 파일 중 하나를 수정한 후에 다시 make 명령어를 수행하고 그 진행과정을 설명하시오.
만약 파일을 수정하고 다른 타겟이 생기거나 제거될 경우 다시 컴파일을 진행한다. 그 과정에서 타겟을 추가적으로 컴파일하거나 제거하고 컴파일 할 수 있다. 간단하게 변수 같은 것만 고쳐도 다시 컴파일을 진행한다.