Redirect stdout do python para chamadas C
Esta é uma pergunta de acompanhamento deaqu especificamente sobre o seurespond.
De um módulo python, estou chamando umOlá Mund executável que simplesmente imprimeHello World
para o stdout. Estou interessado em redirecionar essa saída para um pythonStringIO
e topou comest resposta que quase me leva até a soluçã
A parte crítica desta resposta é este segmento de código:
1. def redirect_stdout():
2. print "Redirecting stdout"
3. sys.stdout.flush() # <--- important when redirecting to files
4. newstdout = os.dup(1)
5. devnull = os.open('/dev/null', os.O_WRONLY)
6. os.dup2(devnull, 1)
7. os.close(devnull)
8. sys.stdout = os.fdopen(newstdout, 'w')
Também gostaria de restaurar o stdout como era antes do redirecionament
QuestõeO que exatamente está acontecendo na função acima?O que édup
edup2
fazendo?O que é/dev/null
?O que a linha 8 está fazendo? sys.stdout = os.fdopen(newstdout, 'w')
)Como posso armazenar o stdout em umStringIO
objeto?Como posso restaurar o stdout após a chamada para o meuOlá Mund programaTenho certeza de que, assim que tiver a resposta para minha pergunta 1, as respostas das perguntas 2 e 3 serão fáceis. Decidi publicá-las de qualquer maneira para talvez empurrar a resposta da pergunta 1 na direção em que quero i