18.11.2014 Views

System Programming Project 3 - dmclab.hanyang.ac.kr

System Programming Project 3 - dmclab.hanyang.ac.kr

System Programming Project 3 - dmclab.hanyang.ac.kr

SHOW MORE
SHOW LESS

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 신호가 들어오길 기다리도록 프로세스가 끝나지 않고

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!