Skif_off
Gold Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Несколько ранее заинтересовался способом перезапуска Double Commander в Linux, сейчас выглядит так: Код: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import os import psutil import signal import subprocess import time def GetPidAndPath(): rpid = 0 rfname = "" for p in psutil.process_iter(["pid", "name"]): if p.name() == "doublecmd": rpid = p.pid rfname = p.exe() break return rpid, rfname dcpid, dcfname = GetPidAndPath() if dcpid != 0: os.kill(dcpid, signal.SIGTERM) #subprocess.run(["kill", "-15", str(dcpid)], shell=False) time.sleep(3) c = 3 while True: if c > 9: break dcpid, tf = GetPidAndPath() if dcpid == 0: break else: c = c + 3 if dcpid == 0: subprocess.Popen(dcfname, shell=False) | Но есть проблема: после отправки SIGTERM Double Commander иногда зависает, иногда зависает наглухо вообще всё и приходиться жать Ctrl+Alt+F1, искать PID doublecmd и прибивать. (Закомментированная строка - это альтернативный вариант отправки SIGTERM, как-то не помогает.) Система Xubuntu 22.04. При этом shell-овский скрипт с вызовом kill вроде такой неожиданности не даёт. В самом скрипте всё нормально, не упустил ли чего? |