В моей программе python у меня есть два subprocesses
, соединенных pipe
и один подключенный к stdin
, а другой подключен к stdout
. Моя проблема в том, что когда поток данных заканчивается, подпроцессы зависают, пока я не нажму ctrl+c
. Мне кажется, что подпроцессы закрывают мою трубу. Если бы я мог сказать, когда данные, проходящие через трубу, я мог бы закрыть ее вручную.Как сказать, когда данные по трубе закончились
def write(tag_name):
p_r, p_w = os.pipe()
pv = subprocess.Popen('pv', stdin=None, stdout=p_w)
dd = subprocess.Popen('dd bs=64k of=/dev/nst0'.split(), stdin=p_r, stdout=None)
dd.wait()
Я получаю 'OSError: [Errno 9] Плохой дескриптор файла' на строке' pv'. –
Глядя на руководство python 'subprocess.STDOUT', можно использовать только как аргумент' Popen.stderr'. Передача 'stdout = subprocess.PIPE' работает, как вы сказали. –
извините, опечатка !! исправлено на 'subprocess.PIPE' –