Получение вывода на печать из общей библиотеки, вызываемой из python, с помощью модуля ctypes

Я работаю с разделяемой библиотекой, которая вызывается через модуль ctypes. Я хотел бы перенаправить стандартный вывод, связанный с этим модулем, в переменную или файл, к которому я могу получить доступ в моей программе. Однако ctypes использует отдельный стандартный вывод из sys.stdout.

Я продемонстрирую проблему с libc. Если кто-то копирует и вставляет код, он может изменить имя файла в строке 2.

import ctypes
libc = ctypes.CDLL('libc.so.6')

from cStringIO import StringIO
import sys
oldStdOut = sys.stdout
sys.stdout = myStdOut = StringIO()

print 'This text gets captured by myStdOut'
libc.printf('This text fails to be captured by myStdOut\n')

sys.stdout = oldStdOut
myStdOut.getvalue()

Есть ли способ, которым я могу захватить стандартный вывод, связанный с загруженной общей библиотекой ctypes?

Ответы на вопрос(2)

Ваш ответ на вопрос