LINUX.ORG.RU

python перенаправление ввода в Popen (doxygen)

 , ,


1

4

Был баш скрипт который генерировал документацию. Там происходит подмена переменной, поэтому doxygen вызывается с параметром ('-') чтобы читал из stdin.

( ( cat $DOXYFILE ; echo "OUTPUT_DIRECTORY=$RESULT_DOXYGEN_DIR/" ) | doxygen - ) >> $LOGFILE 2>&1

И этот код отлично работал. Встала задача переписать это под питончик. Да еще и направить stdout и stderr в файл


sys.stderr = open("/tmp/tmp_stder.log", "w+")
sys.stdout = open("/tmp/tmp_stdout.log", "w+")

errcode = subprocess.call(['doxygen','-'], stdin=file_doxy, stdout=sys.stdout, stderr=sys.stderr, shell=False)
print errcode

Не выводит ничего никуда. Может быть это баг в библиотеке subprocess?


Баг в стандартной библиотеке надо искать в последнюю очередь) С вероятностью в шесть девяток проблема в руках. Например зачем ты затираешь sys.std*?

anonymous
()
Ответ на: комментарий от Yur4eg

Warning This will deadlock when using stdout=PIPE and/or >stderr=PIPE and the child process generates enough output to a >pipe such that it blocks waiting for the OS pipe buffer to accept >more data. Use communicate() to avoid that.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.