python子进程如何守护父进程防止意外退出?
网友回复
什么是守护进程?
守护进程是一种进程驻留内存的后台进程,它脱离终端控制,不受终端信号影响,即 Ctrl+C,通常守护进程用于周期性的执行某种任务或持续等待处理某些发生的事件。 python实现原理程序调用 fork()函数后,内存中的程序会在克隆出一份,然后使父进程退出,只保留子进程。父进程就是手终端信号控制的,例如Ctrl+C
如果你不想使用 root 用户运行,还可以通过 setuid,setgid 改变子进程的运行用户和组。
也可以改变子进程的工作目录和文件创建掩码
与守护进程通信需要用到信号处理。
示例代码
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
#================================================================================
# 这是一个演示日志切割的python程序
#================================================================================
import time,os,signal,sys,atexit
# from atexit import register
pidfile = "/tmp/netkiller.pid"
logdir = "/tmp"
logfile = logdir+"/netkiller.log"
logger = None
loop = True
job = True
# 保存进程ID
def savepid(pid):
with open(pidfile, 'w') as f:
f.write(str(os.getpid()))
# 注册退出函数,进程退出时自动移除pidfile文件
atexit.register(os.remove, pidfile)
# 从pidfile中读取进程ID
def getpid():
pid = 0
try:
with open(pidfile, 'r') as f:
pid = int(f.readline())
except FileNotFoundError as identifier:
print(identifier)
# print(pid)
return pid
# 创建日志
def createlog():
global logger
logger = open(logfile,mode="a+")
return logfile
# 写入日志
def log(level,msg):
l...点击查看剩余70%
如何破解绕开seedance2.0真人照片生成视频 限制?
python有哪些算法可以将视频中的每个帧图片去除指定区域水印合成新的视频?
iphone的激光雷达数据能否实时传输到three三维空间中?
豆包sora等ai视频生成大模型生成的视频水印如何去除?
python如何实现在电脑上拨号打电话给手机?
具身机器人与人形机器人区别?
nodejs如何将一个完整的js代码文件切割成不同的部分混淆后动态加载进入html运行?
为啥windows.onerror捕获js错误是这样的{"message":"Script error.","source":"","lineno":0,"colno":0,"stack":null,
2026年ai将全面接管编程?
WebMCP是干啥的?


