UNIX System Programming by Yang-Sae Moon
Page 1
Homework #9 (1/2)
다음 지시에 따라 프로그램 / 결과 ( 혹은 설명 ) 를 출력하여 제출한다 .
1. 디렉토리 이름을 하나 입력 받아 , 해당 디렉토리에 있는 파일 / 디렉토리의 이 름들을 출력하는 프로그램을 작성한다 .
디렉토리 이름은 argc, argv 를 사용하여 입력 받는다 . ( 즉 , argv[1] 에 입력 )
힌트 : 강의노트 listfiles.c 의 main() 함수만 잘 활용하면 됨
2. 프로그램 종료 시 exit handler 관련 다음 프로그램을 작성한다 .
프로그램의 main() 함수는 다음과 같이 전역 변수 count 를 0 부터 10000 까지 증 가시키는 기능을 한다 .
for(count=0;count < 10000;count++);
프로그램이 종료할 때 , 다음 두 가지 exit handler 가 동작해야 한다 .
첫번째 exit handler 는 (count%2019) 을 출력한다 .
두번째 exit handler 는 time((time_t *)0) 가 리턴하는 값을 출력한다 .
UNIX System Programming by Yang-Sae Moon
Page 2
Homework #9 (2/2)
3. 동적 메모리 할당 함수 malloc() 을 사용하는 다음 프로그램을 작성하시오 .
프로그램은 입력으로 1 에서 26 사이의 수를 입력 받는다 . 이 수를 num 이라 하 자 .
함수 malloc() 을 사용하여 , 크기 num+1 의 문자열을 할당한다 .
할당 받은 문자열의 num 개 바이트에 (char)num+0x40 를 넣는다 . ( 예 : str[i] = (char)(num+0x40);)
할당 받은 문자열의 마지막 바이트에 ‘ \0’ 을 넣는다 . ( 예 : str[num] = ‘\0’)
해당 문자열을 출력한다 .
4. 상기 3 번 프로그램을 확장하여 다음 프로그램을 작성하시오 .
앞서 3 번에서 할당한 메모리에 realloc() 을 사용하여 10 바이트를 추가하시오 .
앞서 할당 받은 문자열을 나머지 10 바이트에도 추가하여 출력하시오 . ( 널 (‘\0’) 처리에 주의한다 .