解决更新时需要关闭所有python应用的问题
This commit is contained in:
33
updatekiller.py
Executable file
33
updatekiller.py
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
import os
|
||||
import atexit
|
||||
|
||||
PIDFILE = '/tmp/uengine-runner.pid'
|
||||
|
||||
#程序结束时清理pid
|
||||
@atexit.register
|
||||
def remove_pid():
|
||||
with open(PIDFILE) as pidfile:
|
||||
pidlst = pidfile.readlines()
|
||||
pidlst.remove(str(PID)+'\n')
|
||||
with open(PIDFILE,'w') as pidfile:
|
||||
pidfile.writelines(pidlst)
|
||||
|
||||
#更新时结束进程
|
||||
def main():
|
||||
for i in open(PIDFILE):
|
||||
try:
|
||||
os.kill(int(i),15)
|
||||
except ProcessLookupError:
|
||||
pass
|
||||
os.remove(PIDFILE)
|
||||
|
||||
#当该程序被直接执行时,执行结束进程操作。如果是导入的形式,则只是记录pid
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
else:
|
||||
#获取进程pid,用于更新时结束进程
|
||||
PID = os.getpid()
|
||||
with open(PIDFILE,'a') as pidfile:
|
||||
print(PID,file=pidfile) #使用print可以在行末输出换行符,而且可以省去类型转换
|
||||
Reference in New Issue
Block a user