파이썬으로 코드를 작성하려면이 코드는 제가 사용하는 파이썬으로 이식 된 꽤 표준적인 C- 메소드입니다. 완벽하게 작동하며 파일 출력을 선택할 수도 있습니다.
import os
import signal
def daemonize(workingdir='.', umask=0,outfile='/dev/null'):
#Put in background
pid = os.fork()
if pid == 0:
#First child
os.setsid()
pid = os.fork() #fork again
if pid == 0:
os.chdir(workingdir)
os.umask(umask)
else:
os._exit(0)
else:
os._exit(0)
#Close all open resources
try:
os.close(0)
os.close(1)
os.close(2)
except:
raise Exception("Unable to close standard output. Try running with 'nodaemon'")
os._exit(1)
#Redirect output
os.open(outfile, os.O_RDWR | os.O_CREAT)
os.dup2(0,1)
os.dup2(0,2)
그런 다음 신호를 사용하여 프로그램에 강제 종료 신호를 보내고 종료 할 때 신호를 사용할 수 있습니다. Python Docs
import signal, os
def handler(signum, frame):
print 'Signal handler called with signal', signum
raise IOError("Couldn't open device!")
# Set the signal handler and a 5-second alarm
signal.signal(signal.SIGALRM, handler)
signal.alarm(5)
# This open() may hang indefinitely
fd = os.open('/dev/ttyS0', os.O_RDWR)
signal.alarm(0) # Disable the alarm
나는 그것을 모두 죽일 수 있지만 걱정하지 마라. 나는 그 PID를 정확하게 찾는 법을 모른다. – BCS
@BCS :'-9'는 종종 ... * 잔인 함 (용서할 것)입니다. [kill -9] (http://speculation.org/garrick/kill-9.html)를 참조하십시오. PID를 찾으면 스크립트는'/ var/run'에 pidfile을 만들거나'argv [0]'에'pkill '과 함께 사용할 이름을 쉽게 지정할 수있는 lib를 사용할 수 있습니다. –