Run Process and Don't Wait

I'd like to run a process and not wait for it to return. I've tried spawn with P_NOWAIT and subprocess like this:

app = "C:\Windows\Notepad.exe"
file = "C:\Path\To\File.txt"

pid = subprocess.Popen([app, file], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE).pid

However, the console window remains until I close Notepad. Is it possible to launch the process and not wait for it to complete?

37
задан Daniel Stutzbach 18 August 2010 в 21:54
поделиться

1 ответ

Этот вызов не ждет завершения дочернего процесса (в Linux). Не спрашивайте меня, что делает close_fds; я написал код несколько лет назад. (BTW: Документация subprocess.Popen запутана, IMHO.)

proc = Popen([cmd_str], shell=True,
             stdin=None, stdout=None, stderr=None, close_fds=True)

Edit:

Я посмотрел документацию subprocess, и я думаю, что важным аспектом для вас является stdin=None, stdout=None, stderr=None,. В противном случае Popen фиксирует вывод программы, и ожидается, что вы на него посмотрите. close_fds делает файловые хэндлы родительского процесса недоступными для дочернего.

50
ответ дан 27 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: