2014-10-16

Python: how to start independent process

Задача: запустить полностью независимый процесс из Python. Попробуем стартовать в Linux простой HTTP сервер и отправить его в свободное плавание:

import subprocess
subprocess.Popen(['python', '-m', 'SimpleHTTPServer', '5000'], close_fds=True)
Однако параметр "close_fds" в Windows не работает: "Note that on Windows, you cannot set close_fds to true". Как вариант, можно использовать стандартные компоненты Windows, cmd.exe и команду start:

import subprocess
subprocess.Popen([‘C:\Windows\System32\cmd.exe’, ‘/C’, ’start’, ‘C:\Python27\Python.exe’, ‘-m’, ’SimpleHTTPServer’, ‘5000’])
Это создаст новое окно cmd.exe, где будет запущен http-сервер. Что и требовалось.