Python中创建守护进程
2013-10-15 17:13
465 查看
python 创建守护进程
python 的os.setdid()提供了类似linux c api的 setsid
也可以通过unix双fork创建守护进程。
os.setsid() #调用系统的setsid(),创建一个新的会话并创建组id
main为写时间戳的永久循环
运行后程序fork一个进程,如果fork成功则程序自己退出
通过setsid() 创建了一个独立于当前会话的进程
再一次fork一个进程,如果fork成功则当前程序退出
这时候进程的父进程就变成了 init,成为了一个独立的deamon
python 的os.setdid()提供了类似linux c api的 setsid
也可以通过unix双fork创建守护进程。
几个相关的函数
os.umask(0) #重设文件创建掩码,子进程会从父进程继承所有权限,可以通过调用这个方法将文件创建掩码初始化成系统默认。os.setsid() #调用系统的setsid(),创建一个新的会话并创建组id
#!/usr/bin/env python #coding:utf8 import sys, os def main(): """ A demo daemon main routine, write a datestamp to /tmp/daemon-log every 10 seconds. """ import time f = open("/tmp/daemon-log", "w") while 1: f.write('%s/n' % time.ctime(time.time())) f.flush() time.sleep(10) if __name__ == "__main__": # do the UNIX double-fork magic, see Stevens' "Advanced # Programming in the UNIX Environment" for details (ISBN 0201563177) try: pid = os.fork() if pid > 0: # exit first parent sys.exit(0) except OSError, e: print >>sys.stderr, "fork #1 failed: %d (%s)" % (e.errno, e.strerror) sys.exit(1) # decouple from parent environment os.chdir("/") os.setsid() os.umask(0) # do second fork try: pid = os.fork() if pid > 0: # exit from second parent, print eventual PID before print "Daemon PID %d" % pid sys.exit(0) except OSError, e: print >>sys.stderr, "fork #2 failed: %d (%s)" % (e.errno, e.strerror) sys.exit(1) # start the daemon main loop main()
代码引用自从:http://code.activestate.com/recipes/66012/download/1/
main为写时间戳的永久循环
运行后程序fork一个进程,如果fork成功则程序自己退出
通过setsid() 创建了一个独立于当前会话的进程
再一次fork一个进程,如果fork成功则当前程序退出
这时候进程的父进程就变成了 init,成为了一个独立的deamon
相关文章推荐
- python 创建守护进程
- 守护进程的创建过程
- Linux守护进程设计规范及python实现
- linux下如何创建守护进程
- [转]Python 守护进程
- Python fork 守护进程<转>
- 守护进程daemon的创建和使用
- 用python编写守护进程
- 创建守护进程:先建立守护进程,在守护进程建立一个子进程,该子进程暂停10s,然后退出,并由该守护进程收集子进程退出的消息。子进程,守护进程的退出消息都在/var/log/message中输出,子进程退
- 守护进程的创建
- 创建独立守护进程脚本
- Linux 创建守护进程(daemon)
- 如何创建守护进程
- APUE中为何创建守护进程时,为何需要2次fork?
- python 守护进程
- Python subprocess 创建子进程
- linux守护进程原理及创建详解
- Linux daemon守护进程的创建
- 守护进程详解及创建,daemon()使用
- Python mutilprocess模块之第一种创建进程方法