Запуск нового процесса/исполняемого файла из Python, который продолжает работатьPython

Программы на Python
Ответить
Anonymous
 Запуск нового процесса/исполняемого файла из Python, который продолжает работать

Сообщение Anonymous »

Я пытаюсь сделать что-то на Python, что очень просто, но безуспешно.
Я хочу запустить исполняемый файл изнутри Python, чтобы при выходе вызывающего скрипта Python запущенный exe продолжался бежать. То есть - для запуска exe внутри независимого процесса - не требуется каких-либо межпроцессных связей между этим процессом и процессом, который его создает.
Текущая целевая операционная система в Windows 10 (не Linux, поэтому решения Linux/Unix не применяются), но в идеале решение должно быть независимым от платформы. Я попробовал 2 разных подхода: используя subprocess.Popen() и os.system()
Мне не удалось заставить работать ни одно из «очевидных» решений или предложенных в разных постах на одну и ту же тему. Список различных попыток приведен ниже — закомментирован.
Здесь блокнот используется только для тестирования — фактический исполняемый файл отличается и принимает аргументы командной строки.
Ни одна из них не работает. - при выходе из сценария Python (внутри VS Code) блокнот исчезает.

Код: Выделить всё

import os
import subprocess

# attempts using popen()
# ----------------------
popen_args = [r'C:\Windows\System32\Notepad.exe']

# subprocess.Popen(popen_args)

# subprocess.Popen(popen_args, shell=True)

# subprocess.Popen(popen_args, creationflags=subprocess.DETACHED_PROCESS)

# subprocess.Popen(popen_args, creationflags=subprocess.CREATE_NEW_CONSOLE)

# subprocess.Popen(popen_args, creationflags=subprocess.DETACHED_PROCESS  | subprocess.CREATE_NEW_PROCESS_GROUP)

# subprocess.Popen(popen_args, shell=True, creationflags=subprocess.DETACHED_PROCESS  | subprocess.CREATE_NEW_PROCESS_GROUP)

# subprocess.Popen(popen_args, close_fds=True, creationflags=subprocess.DETACHED_PROCESS  | subprocess.CREATE_NEW_PROCESS_GROUP)

# subprocess.Popen(popen_args, close_fds=True, shell=True, creationflags=subprocess.DETACHED_PROCESS  | subprocess.CREATE_NEW_PROCESS_GROUP)

# subprocess.Popen(popen_args, start_new_session=True)

# subprocess.Popen(popen_args, start_new_session=True, creationflags=subprocess.DETACHED_PROCESS  | subprocess.CREATE_NEW_PROCESS_GROUP)

# subprocess.Popen(popen_args, start_new_session=True, close_fds=True, creationflags=subprocess.DETACHED_PROCESS  | subprocess.CREATE_NEW_PROCESS_GROUP)

# subprocess.Popen(popen_args, start_new_session=True, close_fds=True, shell=True, creationflags=subprocess.DETACHED_PROCESS  | subprocess.CREATE_NEW_PROCESS_GROUP)

# subprocess.Popen(popen_args, shell=True, stdout=None, stdin=None)

# subprocess.Popen(popen_args, shell=True, stdout=None, stdin=None, start_new_session=True)

# subprocess.Popen(popen_args, close_fds=True, stdout=None, stdin=None, start_new_session=True)

# subprocess.Popen(popen_args, close_fds=True, stdout=None, stdin=None, start_new_session=True, creationflags=subprocess.DETACHED_PROCESS  | subprocess.CREATE_NEW_PROCESS_GROUP)

# attempts using os.system()
# --------------------------
# os.system(r'START "" C:\Windows\System32\Notepad.exe')

# os.system(r'START /b "" "C:\Windows\System32\Notepad.exe"')
интересно: запуск системных команд «START ...» в консоли cmd приводит к тому, что блокнот продолжает работу после закрытия консоли cmd хоста.
Я проделывал подобные операции на нескольких разных языках, но наткнулся на кирпичную стену, пытаясь сделать это на Python.
обновление
  • один комментарий связан с публикацией, в которой предлагается использовать опцию start_new_session – im не уверен, что это только Linux/Unix, но в любом случае это не работает. Я обновил список выше, включив в него эти новые неудачные попытки — ни одна из них не сработала.
  • также на основе другого комментария — я должен ясно дать понять, что это должно быть неблокирующим, делая это с помощью блокировки позвонить легко - но это не то, что мне нужно. вызывающий процесс должен продолжиться после запуска exe-файла и завершиться должным образом, при этом exe-файл все еще работает.


Подробнее здесь: https://stackoverflow.com/questions/687 ... ys-running
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»