Sto lavorando con una libreria condivisa che viene chiamata attraverso il modulo ctypes. Vorrei reindirizzare lo stdout associato a questo modulo a una variabile oa un file a cui posso accedere nel mio programma. Tuttavia, i ctype utilizzano uno stdout separato da sys.stdout.Cattura output di stampa dalla libreria condivisa chiamata da python con modulo ctypes
Mostrerò il problema che sto avendo con libc. Se qualcuno sta copiando e incollando il codice che potrebbe essere necessario modificare il nome del file on line 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()
C'è un modo per catturare l'stdout che è associato con i ctypes caricato libreria condivisa?