python daemon守护进程实现
假如写一段服务端程序,如果ctrl+c退出或者关闭终端,那么服务端程序就会退出,于是就想着让这个程序成为守护进程,像httpd一样,一直在后端运行,不会受终端影响。 守护进程的编写步骤: 1、fork子进程,然后父进程退出,此时子进程会被init进程接管。 #!/usr/bin/env python #coding=utf8 def createDaemon(): import os,sys,time #产生子进程,而后父进程退出 try: pid = os.fork() if pid > 0:sys.exit(0) except OSError,error: print 'fork' sys.exit(1) #修改子进程工作目录 os.chdir("/") #创建新的会话,子进程成为会话的首进程 os.setsid() #修改工作目录的umask os.umask(0) #创建孙子进程,而后子进程退出 try: pid = os.fork() if pid > 0: print "Daemon PID %d"%pid sys.exit(0) except OSError,error: print "fork" sys.exit(1) run() def ping(): import os os.system('ping www.baidu.com >/dev/nul') def run(): while True: import time,threading fd = open('/home/ping.log','a') fd.write("start time---------:%sn"%time.ctime()) fd.flush() t=threading.Thread(target=ping,args=()) t.start() time.sleep(3) fd.write("end of time--------:%sn"%time.ctime()) fd.flush() fd.close() if __name__=='__main__': createDaemon() 1、fork子进程,父进程退出 我们来运行一个这个程序,看看效果 从上图可以看出这个脚本程序已经放入后台,只能使用killall方式来结束掉, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |