System Programming Project 3 - dmclab.hanyang.ac.kr
System Programming Project 3 - dmclab.hanyang.ac.kr
System Programming Project 3 - dmclab.hanyang.ac.kr
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
1. 개요<br />
이번에 다룰 과제에서는 Signal함수의 올바른 사용법과 사용자만의 Signal을<br />
설정하여 사용자의 신호에 따라 원하는 기능을 다룰 수 있게 해준다.<br />
첫 번째 과제에서는 가로채기 신호(Ctrl+C)로 불리는 SIGINT가 들어올 때<br />
원래 수행되는 함수를 변형시켜 현재 들어온 신호를 출력하고 다시 한 번<br />
Ctrl+C가 눌러졌을 때 제 기능을 하도록 구현하였다.<br />
두 번째 과제에서는 사용자의 SIGNAL인 SIGUSR1 과 SIGUSR2을 설정하<br />
여 각각의 신호가 들어올 때 text.txt 파일을 만들어주거나 현재 경로에 있는<br />
파일들을 출력해주는 ls default기능을 작동하도록 구현하였다.<br />
2. 실행과정<br />
<br />
메인함수에서 signal함수를 설정해준다. signal 함수의 원형은 다음과 같다.<br />
이 함수는 두 가지의 인자를 받는다. 하나는 입력받을 신호인 signo로 정수<br />
형이다. 이것은 헤더파일 signal.h 에 여러 가지가 정의되어 있어 우리는<br />
SIGINT, SIGABRT 등 여러 가지 신호를 써 줄 수 있다. 또 하나의 인자로<br />
반환 값이 void형 인 함수 func이다. 이때 func함수에 전달되는 것이 앞서<br />
인자로 받은 signo값이기도 하다. 사실 이 함수는 쉽게 이해하자면 signo로<br />
받았던 신호가 들어오면 func에 정의되어있는 함수를 실행하겠다는 의미이<br />
다.<br />
메인함수에선 SIGINT 신호가 들어오길 기다리도록 프로세스가 끝나지 않고