Я использую этот код
p1 = Popen(['rtmpdump'] + cmd_args.split(' '), stdout=PIPE)
p2 = Popen(player_cmd.split(' '), stdin=p1.stdout, stderr=PIPE)
p2.wait()
# try to kill rtmpdump
# FIXME: why is this not working ?
try:
p2.stdin.close()
p1.stdout.close()
p1.kill()
except AttributeError:
# if we use python 2.5
from signal import SIGTERM, SIGKILL
from os import kill
kill(p1.pid, SIGKILL)
когда p1
завершается, то p2
также завершается.
Проблема:
Если я вручную закрою p2 (это mplayer), rtmpdump / p1 все еще работает.
Я пробовал разные вещи, как то, что выше, но я все еще не могу убить это.
я пробовал с добавлением close_fds=True
.
так что, возможно, rtmpdump все еще пытается записать в стандартный вывод. но почему это приводит к сбою kill ()?
полный исходный код: http://github.com/solsticedhiver/arte-7.py