Solaris Porgraming!!!(Message 대기 Program중 강제 종료시 자원 반환)

|

Porgram을 제작시 Message Queue나 아니면 통신의 대기로 무한 Loop에 들어가 대기 할 경우가

많이 일어 난다. 이럴경우 Program은 ^C나 아니면 kill로 종료해야 하는 상황이 오는데

이럴경우 Program에서 사용하던 자원은 반환을 하지 않거나 Connect된 상황에서 종료가 되고만다

이렇게 반환을 하지 않을경우가 쌓이다보면 분명 무슨 문제가 발생하게 된다 가장 크게 걱정 되는 부분은 역시

메모리 부분.. 그리고 DB의 Connect및 통신의 Connect가 문제가 될 수 있다

이러한 부분을 해결 하기 위해서는 종료 전에 자원을 반환하면 된다

그렇다면 강제 종료를 시킬시에 어떻게 자원을 반환 할 것이냐 라는 의문을 가지게 된다

여기서 찾아봐야될 부분이 Signal 부분이다.

Signal은 실행중인 Program에 특정 신호를 보내 OS에서 어떤 명령으로 너를 어떻게 할거라는 것을 알려준다

이때 제작해 놓은 Module을 잠깐 실행하게 만들면 자원 반납이 가능하다

^C 나 Kill시에 Program에 특정 Signal이 들어 가게 되는데 이 부분을 정의해여 특정 함수를 실행하게 다면된다

Signal 함수는 포인터 함수를 인자로 받기 때문에 C#에서 사용하는 델리게이트와 같은 형태로 사용할수 있다

그렇게 하면 종료시 자원반환이 가능하게 되는 것이다.

And