【Python3静默进程守护】类保姆级教程!确保后台程序不间断运行,避免进程误杀和意外进程终止,超详细!

Hello大家好,又见面啦!

往期回顾:
【Windows下Python源码加密干货教程】Python源码不愿意被人发现?想要商用?不用掏腰包,自己双重加密保护你的关键代码!

【Python3实现键盘后台监控,亲测可用,保姆级教程】Python实现键盘监控与记录,将结果保存到文档中

【PyCharm良心插件推荐】如何让自己的PyCharm独具一格?

【超干货!自定义海龟画图的窗口图标!真的是99%的Python学习者不知道的东西!小编自己摸索出来的!】小编自己用海龟画图做了一个开场动画,想要把它那个丑陋的图标换掉?最终自己摸索出来方法!

【PyCharm良心插件推荐第二期】打代码比打游戏还爽?这么厚重的打击感带来最好的编写体验!

本期介绍:Python基于双线程、双进程的关键进程守护(也可以根据原理自行修改成更高线程数)

拿起你那昂贵的PyCharm(路人:txt文本编辑器行吗? 我:至少拿一个IDLE吧),跟着小编来一场帅气的编写吧~

首先建立两个脚本,我这里示例名称为:1.Protect.py 2.Main.py

现在,先写Main.py。

1.主程序的编写(Main.py --> Main.exe)

# Vent D'hiver IT Lab
# CSDN原力计划
# 请支持新人!谢谢啦!
# 你的点赞与收藏与关注都是博主的动力哦~
import os
from threading import Thread

f = os.popen(".\\Protect.exe") #静默启动进程守护程序
i = 1
def main():
    while i == 1:
        print("Running...") 
        #这里写得比较简便,
        #可以基于原理自行改成自己想要的主程序模块
def detect():
    try:
        while 1 == 1: #循环监测
            print('tasklist | findstr ' + 'Protect.exe')
            process = len(os.popen('tasklist | findstr ' + 'Protect.exe').readlines()) #利用cmd对Protect.exe的“健康状况“进行监测
            print(process)
            if process >= 1:
                print("Protection is on")
            else:
                Error #触发异常
    except:
        print("Error Detected. Restarting...")
        f = os.popen(".\\Protect.exe") 
        #启动所在目录下的Protect程序,
        #稍后我们会将Protect.py打包成这个
        
thread_01 = Thread(target=main) #设置线程
thread_01.start() #启动主线程
thread_02 = Thread(target=detect) #设置线程
thread_02.start() #启动监测线程

现在,就完成了主程序的编写,我们现在可以将其打包成.exe文件,稍后需要用到。

pyinstaller -F Main.py

(打包参数自行设置)

将打包好的.exe文件取到原本脚本所在的文件夹里,和Protect.py放在一起。

2.进程守护程序编写 (Protect.py --> Protect.exe)

# Vent D'hiver IT Lab
# CSDN原力计划
# 请支持新人!谢谢啦!
# 你的点赞与收藏与关注都是博主的动力哦~
import os


def Detect():
    try:
        print('tasklist | findstr ' + "Main.exe")
        process = len(os.popen('tasklist | findstr ' + "Main.exe").readlines())
        print(process)
        if process >= 1:
            return True
        else:
            Error
    except:
        print("Error. Restarting...")
        f = os.popen(".\\Main.exe")
while 1 == 1: #循环监测
    Detect()

打包成Protect.exe

pyinstaller -F Protect.py

(参数自行设置)

最后,将Main.exe和Protect.exe放置于一个文件目录下,启动后,在任务管理器中可以发现两个程序,kill掉其中一个,会在短时间内恢复。

缺点与解决方案:
这种方法,如果有人使用同名进程替换,那么就可以让进程守护失效。最好可以做到两个进程互相通信,比如通过轮流在文本文档中输入密钥,如果超过某段时间监测不到密钥更新,则判定为进程失效,重新开启。原理告诉你啦,可以自己实现,如果评论血书保姆教程,那我考虑下次出相关的更详尽的教程。

好啦,感谢各位的阅读,点个赞收藏下再走呗~如果喜欢我的文章,别忘了关注我哦!你们的支持是我最大的动力!
第一次参与CSDN的原力计划,希望各位能够支持一下萌新哦~
我们下期再见!

你可能感兴趣的:(Python信息技术与安全)