Перехват своего stderr/stdout
Хочу что бы stderr/stdout py-скрипта (включая подпроцессы на других языках) шли не только в консоль, но и в файлы.
sys.stderr = open('err.txt', 'w') не подходит, так как подпроцессы не знают про питоновский sys.stderr.
Я думаю, можно рекурсивно вызывать скрипт через subproces.Popen, но это усложняет чтение скрипта (и кажется перепутывает stderr/stdout которые раньше не перепутывались). Под виндной наверное ещё усложнится тем, что делать select/poll из двух пайпов нельзя.
Есть ли ещё какой-нибудь способ кроме рекурсивного вызова?
upd: платформа windows+linux.
upd: написал рукотворный select через потоки, я не знаю как завершить блокирующий read в соседнем потоке: http://www.everfall.com/paste/id.php?t5zpsc47vi6v
sys.stderr = open('err.txt', 'w') не подходит, так как подпроцессы не знают про питоновский sys.stderr.
Я думаю, можно рекурсивно вызывать скрипт через subproces.Popen, но это усложняет чтение скрипта (и кажется перепутывает stderr/stdout которые раньше не перепутывались). Под виндной наверное ещё усложнится тем, что делать select/poll из двух пайпов нельзя.
Есть ли ещё какой-нибудь способ кроме рекурсивного вызова?
upd: платформа windows+linux.
upd: написал рукотворный select через потоки, я не знаю как завершить блокирующий read в соседнем потоке: http://www.everfall.com/paste/id.php?t5zpsc47vi6v
