Killing shell = True процесс приводит к ResourceWarning: подпроцесс все еще выполняется

1

Следуя рекомендациям How to завершить подпроцесс python, запущенный с оболочкой = True

У меня есть процесс, который я начинаю со следующего

process = subprocess.Popen(my_cmd, shell=True, executable='/bin/bash', preexec_fn=os.setsid)

my_cmd находится в виде some_cmd_that_periodically_outputs_to_stdout | grep "some_fancy_regex" > some_output_file.txt some_cmd_that_periodically_outputs_to_stdout | grep "some_fancy_regex" > some_output_file.txt

Я убиваю процесс следующим образом

os.killpg(os.getpgid(process.pid), signal.SIGKILL)

После убийства я получаю следующее предупреждение

ResourceWarning: subprocess XXX is still running

Почему я получаю это предупреждение?

  • 0
    удалить эту чертову shell=True что вам, вероятно, не нужно, и она будет работать ... или перейдите по ссылке dupe.
  • 0
    Но именно так я получил это предупреждение, перейдя по ссылке dupe
Показать ещё 5 комментариев
Теги:
subprocess

1 ответ

1

Вы не wait завершения процесса. Даже если вы убьете процесс, вы все равно должны wait его, чтобы у вас не было процесса зомби. Python предупреждает вас, что вы не wait.

Добавьте вызов process.wait() после его убийства.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню