kill(1)명령을 이용하면, 프로세스에 시그널을 보낼 수 있다는 것을 알고 있을 것이다. kill은 인자로 시그널 번호와 시그널을 받을 프로세스의 PID를 받는데, 이때 시그널 번호를 0 으로 할경우 프로세스가 존재하는 지를 검사할 수 있다.
시그널번호 0은 실제 시그널을 보내진 않고, 시그널을 받을 프로세스가 존재하는지만을 검사한다. 만약 프로세스가 존재한다면 0을 리턴하고, 그렇지 않다면 1을 리턴한다.
$$는 쉘에서의 특수변수로 쉘 자신의 PID값을 가지고 있다. 그러므로 -0 옵션을 이용해서 검사를 하게 될경우 쉘 프로세스가 존재하고 있으므로 0을 리턴하게 될 것이다. $?는 가장 최근 종료된 프로세스의 리턴값을 가지고 있는 특수변수다.
이제 존재하지 않는 프로세스를 검사해보자.
리눅스는 kill(2) 시스템 함수를 제공한다. 이 함수는 두번째 인자로 시그널번호를 넘겨 받는데, 0을 설정하면 시그널을 보내지 않고 프로세스가 존재하는지만을 검사한다. 프로세가 존재하면 0 그렇지 않으면 0이 아닌 정수를 리턴한다.
다음은 위의 쉘프로그램의 C 버전이다.
kill 시스템 명령을 이용한 프로세스 모니터링
예제 쉘 프로그램
예제 C 프로그램
Recent Posts
Archive Posts
Tags