1. 当前位置:网站首页 > Python

基于多进程端口Qt关闭时没有立即关闭的解决方案


关闭时后台进程服务还存活,或者启动前端口被占用

封装的一个Kill函数方法,启动前可以调用kill_for_port函数,谨慎使用特殊端口(这里可以再把一些常用端口做个判断,录入22 3306等端口,就自行添加了)

# coding=utf-8
import os
import signal
import psutil

def kill_for_port(port: int):
    """根据端口判断是否存在程序"""
    # 获取当前的网络连接信息
    net_con = psutil.net_connections()
    for con_info in net_con:
        if con_info.laddr.port == port:
            os.kill(con_info.pid, signal.SIGTERM)

def kill_for_pid(pid: int):
    # 根据Pid删除
    os.kill(pid, signal.SIGTERM)

# 原理:获取正在运行程序的pid,通过pid获取程序名,再按程序名进行判断
def if_process_running(process_name):
    pl = psutil.pids()
    result = "没有运行"
    for pid in pl:
        if psutil.Process(pid).name() == process_name:
            if isinstance(pid, int):
                result = "正在运行"
    return result

def net_pid_port(pid: int):
    """根据pid寻找该进程对应的端口"""
    a_list = []
    # 获取当前的网络连接信息
    net_con = psutil.net_connections()
    for con_info in net_con:
        if con_info.pid == pid:
            a_list.append({pid: con_info.laddr.port})
    return a_list

本文最后更新于2023-4-14,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
版权说明

本文地址:http://www.liuyangdeboke.cn/?post=41
未标注转载均为本站远程,转载请注明文章出处:

发表评论

联系我们

在线咨询:点击这里给我发消息

微信号:17721538135

工作日:9:00-23:00,节假日休息

扫码关注