답변:
간단히 말해 데몬은 백그라운드 프로세스 입니다.
데몬은 백그라운드에서 실행되는 일반적인 프로그램 일 수 있지만 대부분 프로세스를 시작하고 분기하여 상위 항목을 종료하여 작성됩니다.
프로세스를 포크한다는 것은 프로세스의 정확한 사본을 만드는 것을 의미합니다. 실제 부모 가 즉시 종료 되면 해당 프로세스의 부모 는 이제 init 프로세스입니다 /sbin/init
. 이는 모든 유닉스 계열 운영 체제에서 처음 시작되는 프로세스 입니다. 이제 프로세스를 데몬이라고하며 연관된 TTY가 없습니다.
다음은 파이썬에서 데몬의 예입니다 :
import sys, os, time
pid = os.fork()
# there now exist two processes
if pid > 0: # If this is the parent,
sys.exit(0) # quit.
# this is the background part:
time.sleep(5)
print "Hello, World!"
엄밀히 말하면 아직은 아닙니다. 또한 현재 작업 디렉토리, 표준 입력 및 출력을 로그 파일 등으로 변경해야합니다. 이 위키 백과 기사 에서 자세한 내용을 읽을 수 있습니다 .
예제를 실행하면 명령 줄에서 시작한 프로세스가 종료 된 경우에도 2 초 후에 인쇄됩니다. 이 프로세스의 사본은 지금 'by'init로 실행됩니다.
/proc/*/fd
). 잘 동작하는 데몬은 stdout, stderr 및 stdin에 핸들을 제공하여 tty에서 완전히 분리됩니다.