Это продолжение вопроса от здесь, конкретно касающегося его ответа.
Из модуля python я вызываю Hello World исполняемый файл, который просто печатает Hello World
в stdout. Я заинтересован в перенаправлении этого вывода в python StringIO
и наткнулся на этот ответ, который почти привел меня к решению.
Критической частью этого ответа является этот сегмент кода:
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')
Также я хотел бы восстановить stdout в том виде, в котором он был до перенаправления.
dup
и dup2
?/dev/null
?sys.stdout = os.fdopen(newstdout, 'w')
)StringIO
? Я почти уверен, что как только я получу ответ на вопрос 1, ответы на вопросы 2 и 3 будут простыми. Но я все равно решил их опубликовать, чтобы подтолкнуть ответ на вопрос 1 к тому направлению, в котором я хочу двигаться.