Estoy trabajando con una biblioteca compartida a la que se llama a través del módulo ctypes. Me gustaría redireccionar el stdout asociado con este módulo a una variable o un archivo al que pueda acceder en mi programa. Sin embargo, ctypes usa una salida estándar separada de sys.stdout.Captura de salida de impresión desde la biblioteca compartida llamada desde python con el módulo ctypes
Voy a demostrar el problema que estoy teniendo con libc. Si alguien está copiando y pegando el código que podría tener que cambiar el nombre del archivo en la línea 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()
¿Hay alguna manera de que pueda capturar la salida estándar que se asocia con los ctypes cargado biblioteca compartida?