우선은 가장 기본적인 방법인 것은 파일같은것을 남기는 것입니다. pid같은것을 기록한... 그리고 해당 process table을 읽어서 비교한뒤에 처리하는 방법이 있습니다.
파일로 남기기 싫다면 혹은 공유메모리영역이라든지 memory map에다가 쓰던지 해주는 것도 하나의 방법입니다.
이보다 더 괜찮은 방법으로는 pre-fork 모델을 쓰는 방법입니다. 우선 껍데기 부모를 만들고, 이게 다른 원하는 프로세스를 만드는 것이죠. 이렇게 하면 원하는 프로그램을 계속 감시하면서 죽으면 바로 알수도 있습니다. 그리고 누군가가 직접 해당 프로그램을 실행하지 못하게 막고요.
========================================
* The truth will set you free.
여러 방법이 있을수 있습니다.
우선은 가장 기본적인 방법인 것은 파일같은것을 남기는 것입니다. pid같은것을 기록한... 그리고 해당 process table을 읽어서 비교한뒤에 처리하는 방법이 있습니다.
파일로 남기기 싫다면 혹은 공유메모리영역이라든지 memory map에다가 쓰던지 해주는 것도 하나의 방법입니다.
이보다 더 괜찮은 방법으로는 pre-fork 모델을 쓰는 방법입니다. 우선 껍데기 부모를 만들고, 이게 다른 원하는 프로세스를 만드는 것이죠. 이렇게 하면 원하는 프로그램을 계속 감시하면서 죽으면 바로 알수도 있습니다. 그리고 누군가가 직접 해당 프로그램을 실행하지 못하게 막고요.
========================================
* The truth will set you free.
아파치 서버 프로그램을 예를 들겠습니다.[code:1]apachect
아파치 서버 프로그램을 예를 들겠습니다.
apachectl start
한 다음에 또
apachectl start
하면 이미 실행이 되고 있다는 메시지가 나옵니다.
apachectl 은 shell script 니까 그걸 잘 보시면 도움이 될 겁니다.
세벌 https://sebuls.blogspot.kr/
대개...
대개 시스템 데몬들은 /var/run/xxx에 파일을 만들고 그 안에 그 task의 pid를 집어넣습니다.
이것으로 현재 task가 돌고 있는지 확인도 하고 데몬은 내릴때도 쓰고 그런 것으로 알고 있습니다.
댓글 달기