UNIX System Programming by Yang-Sae Moon
Page 1
Homework #11 (1/2)
프로그램을 작성하고 , 프로그램과 실행 결과를 프린트하여 제출한다 .
1. 시그널 SIGUSR1(10) 과 SIGUSR2(12) 을 받아 처리하는 프로그램을 작성한다 .
프로그램은 기본적으로 무한 루프를 수행하면서 , 시그널을 기다린다 .
SIGUSR1을 받으면 , “Oops! SIGUSR1!” 를 출력하되 죽지는 않는다 .
SIGUSR2 를 받으면 , “Ooooops! SIGUSR2!” 를 출력하고 죽는다 .
2. 주어진 시간 내에 종료되지 않으면 1 차 warning 을 , 2 차 종료를 시키는 프로그램을 작성 한다 .
강의노트 15 의 timelimit.c 프로그램을 활용하여 rlimit.c 프로그램을 작성한다 .
프로그램 rlimit.c 는 초 (n) 과 프로그램 이름 (command) 을 입력으로 받는다 .
만일 프로그램이 n 초 이내에 끝나지 않으면 , SIGINT 를 보내서 warning 을 한다 .
그 이후 , 추가로 n 초가 지나도 끝나지 않으면 , SIGKILL 을 보내서 강제 종료시킨다 .
이를 위해 , dosomething.c 라는 프로그램을 작성하되 , 이 프로그램은 SIGINT 는 처리 ( 혹은 무시 ) 하도록 작성하고 , 이를 위 rlimit 에 command 프로그램으로 사용한다 .
UNIX System Programming by Yang-Sae Moon
Page 2
Homework #11 (2/2)
3. 부모 프로세스가 자식 프로세스를 종료시키는 프로그램을 작성한다 .
부모 프로세스는 일곱 개의 자식 프로세스를 차례로 생성한다 .
(자식 프로세스는 생성된 이후에 아무 일도 하지 않는다 . pause() 혹은 sleep() 사용 )
일곱의 자식 생성이 성공했으면 , 1 초 단위로 프로세스를 하나씩 종료시키되 , 생성된 순서의 역순으 로 종료시킨다 . (kill() 사용 )
자식 프로세스를 모두 종료한 후에 , 자신도 raise() 를 사용하여 종료한다 .
시그널로서 어떤 것을 쓸지는 본인이 스스로 정하며 , 프로그램과 수행 결과를 제출해야 한다 .