На сервере Windows, я начинаю subprocs от основного сценария с консольным окном и добавить его в список проков, так что я могу закрыть их:Python подпроцесс CREATE_NEW_CONSOLE Windows, не закрывая на убийстве()
p = Popen(["python", 'secondscript.py', arg1, arg2, arg3], creationflags=CREATE_NEW_CONSOLE)
Proc.append(p)
Позже, если я убить проки с:
for p in Proc:
p.kill()
Они, кажется, перестают работать, но я получаю налево с консольными окнами, оставшихся открытыми. Сама по себе это не огромная сделка, но может со временем складываться и начинать создавать проблемы.
Жизнь намного проще с использованием нового флага консоли, но есть ли более аккуратный способ убедиться, что окна консоли закрыты правильно? Я мог бы полагаться на taskkill из OS lib, возможно, но это не похоже на хороший способ сделать это.
У меня был взгляд вокруг, похоже, что у некоторых людей возникли проблемы на серверах Linux и пришлось отправить сигкилл, но я подумал, что это то, что должен был сделать kill().
Возможно, мне просто нужно будет использовать kill(), чтобы остановить его работу, а затем выполнить задание, чтобы получить порядок, но я был бы признателен за любой совет, если есть более простой способ сделать это.
аккуратнее путь передать сокет в дочерний процесс, чтобы отправить ему сообщение о выходе. Таким образом, он может выйти изящно. Вызов «TerminateProcess» должен быть последним средством в целом, потому что он вытаскивает ковер из-под программы. Это эквивалент 'SIGKILL' в Unix. – eryksun