Я пытаюсь открыть PDF-файл с помощью приложения по умолчанию на MacOS, то есть предварительного просмотра, с помощью
Код: Выделить всё
import subprocess
doc = subprocess.Popen(['open', 'path_to_doc.pdf'])
и
закройте его.
Я пробовал решения, описанные в разделе «Как завершить подпроцесс Python, запущенный с помощью оболочки = True». но ни один из них не работает.
результат psutil.Process(pid=6994, name='open', status='zombie', start='12:07:11'). process.children(recursive=True) пуст.
приводит к ProcessLookupError: [Ошибка 3]Нет такого процесса. Проверив Activity Monitor (приложение для просмотра процессов), я обнаружил, что pid приложения всегда равен doc.pid+1. Если doc.pid == 6994, pid приложения равен 6995. Я могу закрыть приложение с помощью os.killpg(doc.pid+1, signal.SIGTERM), но это кажется субъективным и не всегда может сработать.
Я знаю об этом osascript на MacOS для закрытия приложений, например, с помощью кода
Код: Выделить всё
clo = subprocess.Popen(['osascript', '-e', '''quit app "preview"'''])
Однако мне хотелось бы найти решение для разных платформ.
Подробнее здесь:
https://stackoverflow.com/questions/790 ... subprocess