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方式来结束掉,
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


