Kill() 을 이용한 프로세스 모니터링

 PID를 디스크에 기록하는 전략은 시스템 데몬들이 주로 사용하는 표준으로 syslog에서 OpenSSH까지의 모든 데몬이 이를 사용한다.

 일단 파일시스템에서 PID 파일을 이용할 수 있게 되면 프로세스는 ps 출력을 구문 분석하거나 유사 파일시스템(pseudo-filesystem) /proc 를 검색하지 않고도 자신의 다른 인스턴스가 이미 실행 중인지 확인할 수 있다. 이 해결책은 kill() 시스템 호출의 반환 값을 이용하는데, 확인하고자 하는 프로세스에게 SIGTERM, SIGHUP 또는 기타 표준 신호를 전송하는 대신 SIG_0 을 전송한다.

 이는 프로세스가 현재 실행 중이면(즉, 프로세스 테이블에 해당 프로세스 항목이 존재한다면) kill() 이 ‘0’을 반환하고 프로세스가 실행 중이지 않거나 오류 조건이 발생하면 ‘0이 아닌 값’을 반환하게 한다. psad 데몬이 실행 중인지 여부를 확인하는 데 이 방법을 어떻게 사용하는지 보이기 위해 다음과 같은 명령어를 사용할 수 있다.

User image
 0 이 반환됐으므로 psad 가 현재 시스템에서 실행 중임을 알 수 있다.

 kill() 시스템 호출이 실제로 어떻게 사용되며 무엇을 반환하는지 알아보기 위해 strace 유틸리티를 사용해보자. 마지막 행의 = 0 이 kill() 의 반환 값이다.

User image
 끝으로 충분히 발달한 모든 프로그래밍 언어가 kill() 시스템 호출에 대한 인터페이스를 제공하며 여기서는 psad 가 현재 실행 중인지 아니지를 탐지하기 위해 어떻게 펄을 사용하는지 알아본다.(kill() 시스템 호출은 굵게 나타낸 행에서 호출한다.)

User image

윈도우에서 QDevlop 사용하기…

 리눅스와 윈도우에서 모두 사용할 수 있는 Qt 프로그램..

 하지만 윈도우에서 Qt 프로그램을 컴파일하기 위해서는 별도의 조치가 필요하다.(리눅스도 마찬가지..)

 대표적으로 사용하는 것은 QDevelop…

 QDevelop의 설치를 위해서는 다음의 과정을 따른다.

 먼저 MinGW와 Qt를 설치한다.

 다음의 사이트에서 qt와  mingw 가 같이 있는 파일을 다운받아 설치한다.

 
 여러가지 항목 중, Automated MinGW Installer 를 다운받아서 설치하는 것이 간편하다.

 그리고
 

 다음의 사이트에서 QDevelop를 다운받고 설치한다.
 http://qdevelop.org/

man 페이지만 따로 설치하기..

 노트북에 깔려있던 리눅스에 이상하게 man 3번 섹션, 즉 라이브러리 콜에 대한 man 페이지가 설치되어 있지 않았다.

 평소에는 불편하긴했지만 인터넷의 도움으로 그럭저럭 쓸 수 있었다.

 하지만 매번 맨페이지를 보기 위해 웹 브라우저를 띄우고 검색을 하는 과정이 계속되자 짜증이났다.

 KLDP에서 잠시 검색을 해보니 이내 답을 찾을 수 있었다.

 sudo apt-get install manpages-dev

 명령어 한줄로 간단히 해결되었다.

 이제 귀찮음이여 안녕이다. : )

 원본 : http://kldp.org/node/91231