UNIX System Programming by Yang-Sae Moon
Page 1
Homework #8 (1/3)
다음 지시에 따라 프로그램 / 결과 ( 혹은 설명 ) 를 출력하여 제출한다 .
1. 다음 단계에 따라 수행해보자 .
/usr/bin/passwd 파일을 자신의 현재 디렉토리에 복사해 온다 .
$ cp /usr/bin/passwd .
다음과 같이 자신의 현재 디렉토리에 있는 passwd 명령을 수행한다 .
$ ./passwd
패스워드 변경을 수행해 보고 , 그 결과를 캡쳐한다 . 그리고 , 왜 그런 결과가 나왔는지를 설명하여 제출한다 .
2. 다음과 같이 파일의 Permission 을 바꾸는 프로그램을 작성하시오 .
파일 이름 하나를 입력 받아 , Owner 의 Permission 에 “ x” 를 추가하는 프로그램
파일 이름 하나를 입력 받아 , Group 의 Permission 에 “ x” 와 ‘ s’ 를 추가하는 프로 그램
Files & Directories
UNIX System Programming by Yang-Sae Moon
Page 2
Homework #8 (2/3)
3. 강의노트의 listfiles.c 프로그램을 복사하여 수행해 본다 .
복사하기
$ cp ~ysmoon/tmp/listfiles.c .
컴파일한 후 , 두 개의 디렉토리에 대해 실행하고 그 결과를 캡쳐하기 예제 ) $ listfiles /
주의사항 : 두 디렉토리 중 적어도 하나는 본인 계정의 디렉토리를 포함해야 한다 .
uid/gid 가 본인 것이 나타나야 함
4. 현재 시간에 1 년을 더하여 파일의 접근 / 갱신 날짜로 세팅하는 프로그램을 작성하시오 .
파일 이름은 argc, argv 를 사용하여 입력 받는다 . ( 즉 , argv[1] 에 입력 )
현재 시간은 다음과 같이 time() 함수를 사용하여 구한다 . cur_time = time((time_t *)0);
1 년은 31536000 초 (= 365 일 x 24 시 / 일 x 3600 초 / 시 ) 로 한다 .
Files & Directories
UNIX System Programming by Yang-Sae Moon
Page 3
Homework #8 (3/3)
5. sync() 에 관해 다음 실험을 수행해 본다 .
강의노트 12 의 sync() 함수 사용 예제를 수정하여 ,
(1) 버퍼크기가 4,096 바이트이고 , 파일 사이즈가 2MB 인 writeA.c 를 작성하고 , (2) 버퍼크기가 16,384 바이트이고 , 파일 사이즈가 2MB 인 writeB.c 를 작성한 다 .
두 프로그램 writeA.c 와 writeB.c 를 sync() 를 사용한 경우와 그렇지 않은 경우를 각각 실행한 후 , 실행 시간을 (rough 하게 초 단위로 ) 측정한다 .
수행 결과를 캡쳐하고 , 왜 그런 결과가 나왔는지 간략히 설명한다 .
Due Date: 5/20(
수 )
Files & Directories