티스토리 뷰

 Python으로 Daemon 생성 코드를 작성해봤습니다. 간단하게 작성한 코드이며 while문을 이용하여 무한루프를 사용하여 데몬이 살아있는지 확인하였습니다.

Wiki 백과에 c언어 fork() 생성을 검색하면 존재하는 Daemon 예제코드가 있습니다.


Daemon 생성을 위한 단계

- fork()를 호출하여 데몬이 될 새로운 프로세스를 생성

- 부모프로세스는 exit()를 호출하여 부모프로세스를 종료

- Daemon은 새로운 프로세스 그룹, 세션을 제공하는 setsid() 호출

- 표준 입력, 출력, 오류를 열고 /dev/null로 재지정


Daemon 생성을 위한 코드

import os, sys

def daemon():
        try:
          pid = os.fork()

          if pid > 0:
            print 'PID: %d' % pid
            sys.exit()

        except OSError as error:
          print 'Unable to fork. Error: %d (%s)' % (error.errno, error.strerror)
          sys.exit()

        doTask()

def doTask():
        "new session create"
        os.setsid()

        os.open("/dev/null", os.O_RDWR)
        os.dup(0)
        os.dup(0)

        while True:
          pass

if __name__ == '__main__':
        daemon()

Daemon 동작 확인





댓글