Когда я запускаю следующий код:
p = subprocess.Popen("...", shell=True)
if p.poll() == None:
p.kill()
Процесс просто не убивается. Я нахожусь в Windows.
Я думал, что это из-за многопоточности, я запустил его в одном потоке, еще одно и то же.
У вас есть идеи, почему это может произойти?
Спасибо
Обновление
Я нашел код, который вызывает проблему:
while cur_time < self.time_limit:
if p.poll() != None:
too_much_time = False
break
time.sleep(0.1)
cur_time += 0.1
Я запускаю это, чтобы убедиться, что процесс не занимает больше времени. По-видимому, почему я не могу убить процесс.
Поскольку вы используете shell=True
, все, что вы в конечном итоге убиваете, это сам shell (сам процесс cmd.exe).
Группы процессов - относительно новая функция Windows, и я не знаю ни одного программного обеспечения, кроме планировщика заданий, который их фактически использует.
Возможно, команда, с которой вы работаете, устанавливает сигмасс, чтобы игнорировать сигнал kill. Можете ли вы попробовать с другой командой? например, сделать script, который спит в бесконечном времени и попытаться убить, что
offtopic, я думаю, что shell arg ничего не означает в окнах
p.kill()
и вы сказали, что существует один поток.cur_time, self.time_limit
в цикле.