前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 守护进程

Python 守护进程

作者头像
py3study
发布2020-01-07 14:53:21
7350
发布2020-01-07 14:53:21
举报
文章被收录于专栏:python3python3

 nohup 可以使程序后台运行不受终端影响,但想使程序运行后就脱离终端Python需要用到os.fork来实现,例子如下:

daemonize.py

代码语言:javascript
复制
#!/usr/bin/python #coding:utf-8  import sys import os  def daemonize(stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):     try:         pid = os.fork()         if pid > 0:             sys.exit(0)     except OSError, e:         sys.stderr.write("fork #1 failed: (%d) %s\n" % (e.errorno, e.strerror))         sys.exit(1)              os.chdir('/')     os.umask(0)     os.setsid()          try:         pid = os.fork()         if pid > 0:             sys.exit(0)     except OSError, e:         sys.stderr.write("fork #2 failed: (%d) %s\n" % (e.errorno, e.strerror))         sys.exit(1)              for f in sys.stdout, sys.stderr:         f.flush()          si = file(stdin, 'r')     so = file(stdout, 'a+')     se = file(stderr, 'a+', 0)     os.dup2(si.fileno(), sys.stdin.fileno())     os.dup2(so.fileno(), sys.stdout.fileno())     os.dup2(se.fileno(), sys.stderr.fileno()) 

然后我们来调用daemonize接口,使脚本后台运行:

test.py

代码语言:javascript
复制
#!/usr/bin/python #coding:utf-8  from daemonize import daemonize import sys import time  def test():     while True:         sys.stdout.write("Hello!")         time.sleep(1)          if __name__ == "__main__":     daemonize(stdout='/home/wisp/test_print.log', stderr='/home/wisp/test_print.log')     test() 

运行test.py后,test.py就会后台运行!~~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档