博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中创建守护进程
阅读量:6681 次
发布时间:2019-06-25

本文共 1545 字,大约阅读时间需要 5 分钟。

python 创建守护进程

  • python 的os.setdid()提供了类似linux c api的 setsid
  • 也可以通过unix双fork创建守护进程。

    几个相关的函数

  1. os.umask(0) #重设文件创建掩码,子进程会从父进程继承所有权限,可以通过调用这个方法将文件创建掩码初始化成系统默认。
  2. os.setsid() #调用系统的setsid(),创建一个新的会话并创建组id
#!/usr/bin/env python#coding:utf8import 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()

  

代码引用自从:
  1. main为写时间戳的永久循环
  2. 运行后程序fork一个进程,如果fork成功则程序自己退出
  3. 通过setsid() 创建了一个独立于当前会话的进程
  4. 再一次fork一个进程,如果fork成功则当前程序退出
  5. 这时候进程的父进程就变成了 init,成为了一个独立的deamon

转载于:https://www.cnblogs.com/zhiguo/p/3370599.html

你可能感兴趣的文章
107个常用Javascript语句
查看>>
Java递归拷贝文件夹
查看>>
从Java到C++——从union到VARIANT与CComVariant的深层剖析
查看>>
java使用jeids实现redis2.6的list操作(3)
查看>>
Android简单框架会用到的基类(2)
查看>>
flask sqlalchemy多个外键引用同张表报错sqlalchemy.exc.AmbiguousForeignKeysError
查看>>
在 CentOS6 上安装 Python 2 & 3
查看>>
svnserver配置文件详解
查看>>
Mybatis之动态SQL语句
查看>>
文件上传利器SWFUpload使用指南
查看>>
jdbc性能优化
查看>>
linux下activemq异常退出,重启失败
查看>>
WordPress条件判断标签(Conditional Tags)手册
查看>>
【05】中级:翻页采集(以微博博主主页采集为例)
查看>>
OSSEC编写DECODE
查看>>
Hibernate 通用底层Dao
查看>>
JAVA 常用的工具类总结
查看>>
网络安装linux
查看>>
社交大革命,不可遏止的互联网春天
查看>>
蜂巢科技发布首款创新产品“小清新”空气卫士
查看>>