背景说明

        假如自己使用python开发了一个程式,然后进行了打包,打包后的程序名字叫run.exe,为了避免重复启动和进程阻塞,如何每次启动程式的时候先进行进程检查,如果后台已经有run.exe在运行了,自动杀死后台程序,然后重新启动run.exe

分析及解决

        要实现这个功能,你可以使用 Python 的 psutil 库来检查和管理进程。下面是一个示例代码,展示了如何在启动新的 run.exe 之前杀死已经运行的同名进程。

首先,确保你安装了 psutil 库,可以通过以下命令进行安装:

pip install psutil

然后,编写以下 Python 脚本来实现你想要的功能:

import psutil
import os
import subprocess

def kill_existing_processes(process_name):
    for proc in psutil.process_iter(attrs=['pid', 'name']):
        if proc.info['name'] == process_name:
            print(f"Killing process: {proc.info['name']} with PID: {proc.info['pid']}")
            proc.terminate()  # 或者使用 proc.kill() 立即终止

def start_process(executable_path):
    print(f"Starting process: {executable_path}")
    subprocess.Popen(executable_path)

if __name__ == "__main__":
    executable_name = "run.exe"
    executable_path = os.path.join(os.getcwd(), executable_name)

    # 杀死已经运行的同名进程
    kill_existing_processes(executable_name)

    # 启动新的进程
    start_process(executable_path)

代码说明:

1.kill_existing_processes(process_name):

  • 这个函数遍历所有正在运行的进程。
  • 如果发现进程名称与指定的 process_name 匹配,就调用 proc.terminate() 来终止进程。

2.start_process(executable_path):

  • 使用 subprocess.Popen() 启动新的进程。

3.主程序:

  • 通过 psutil 查找并终止已经运行的 run.exe
  • 使用 subprocess.Popen() 启动新的 run.exe

注意事项:

  • 确保正确设置了 executable_path,指向 run.exe 的完整路径。
  • proc.terminate() 会发送一个终止信号到进程,允许进程进行清理。如果需要立即杀死进程,可以使用 proc.kill()
  • 使用这个脚本时,要确保有足够的权限终止其他进程,特别是在某些操作系统上可能需要管理员权限。
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐