需要用到库:psutil
import psutil
backup_exit = sys.exit # 备份原始 exit 函数
def custom_exit(status):
current_pid = psutil.Process().pid # 获取当前进程的pid
child_processes = psutil.Process(current_pid).children() # 获取当前进程的所有子进程
for child in child_processes:
child.kill()
print(f'子进程:{child.pid} 已清理')
print('程序退出,', status)
backup_exit(status)
sys.exit = custom_exit # 替换 sys exit 函数
个人在pycharm中开发时,程序运行在控制台的时候,如果开了子进程,pycharm会一直等待子进程结束了才能 关闭/重启 控制台,非常的不方便。
测试了一下发现pycharm中调用的是 sys.exit 函数,直接hook替换掉这个函数,也就变相的实现了退出检测。
用这个方法是我没找到合适的退出监听的事件,各种不好用。。。。
如果需要监听自定义函数,建议弄个全局 list,里面放函数,退出时依次执行。