python守护进程编写
来源:互联网 发布:手机和信息安全 知乎 编辑:程序博客网 时间:2024/05/05 14:45
代码如下:
#!/usr/bin/env python#coding:utf-8import osimport sysimport timeimport signaldef create_daemon(stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): # 忽略终端I/O信号,STOP信号 signal.signal(signal.SIGTTOU, signal.SIG_IGN) signal.signal(signal.SIGTTIN, signal.SIG_IGN) signal.signal(signal.SIGTSTP, signal.SIG_IGN) signal.signal(signal.SIGHUP, signal.SIG_IGN) # 结束父进程,使得子进程成为后台进程 try: if os.fork() > 0: sys.exit(0) except OSError, error: print 'fork #1 failed: %d (%s)' % (error.errno, error.strerror) sys.exit(1) # 建立一个新的进程组,在这个新的进程组中,子进程成为这个进程组的首进程,以使该进程脱离所有终端 os.setsid() # 再次新建一个子进程,退出父进程,保证该进程不是进程组长,同时让该进程无法再打开一个新的终端 try: pid = os.fork() if pid > 0: print 'Daemon PID %d' % pid sys.exit(0) except OSError, error: print 'fork #2 failed: %d (%s)' % (error.errno, error.strerror) sys.exit(1) for f in sys.stdout, sys.stderr: f.flush() MAXFD = os.sysconf('SC_OPEN_MAX') for i in xrange(3, MAXFD): try: os.close(i) except: pass 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()) # 改变工作目录,使得进程不与任何文件系统联系 os.chdir('/') # 将文件屏蔽字设置为0 os.umask(0) # 忽略SIGCHLD信号 signal.signal(signal.SIGCHLD, signal.SIG_IGN) run_daemon()def run_daemon(): fd = open('/tmp/daemon.log', 'w') while True: fd.write(time.ctime() + '\n') fd.flush() time.sleep(2) fd.close()if __name__ == '__main__': create_daemon()
0 0
- python守护进程编写
- python编写守护进程
- linux python守护进程编写
- python下编写守护进程
- 用python编写守护进程
- python守护进程编写和原理理解
- 用python编写Linux守护进程
- Python:Linux下守护进程编写
- 用Python给Linux编写守护进程
- Python 编写windows守护进程程序
- [Python]第五课笔记 --多进程及守护进程编写
- linux 守护进程编写
- 守护进程的编写
- 编写守护进程
- 守护进程的编写
- 编写daemon守护进程
- linux 守护进程编写
- 编写守护进程
- 在Android Studio中打开File Explorer
- artTemplate新手入门(一)
- 自定义NSOperation 下载图片
- WIN7下wamp配置虚拟主机
- java中重载与重写的区别
- python守护进程编写
- 《程序员面试金典》基本字符串压缩
- 使用phpmyadmin导入大数据的方法
- 【干货】一款APP,从设计稿到切图
- AS使用记录
- Linux环境变量修改后,众多命令提示command not found
- android sqlite
- 关于数据库用户sa修改密码
- Qlikview配置ODBC连接ORACLE/SQL SERVER