Puede interceptar stdout
antes de escribirse desde su código C
, luego procesar el valor de salida.
import sys
import StringIO
buffer = StringIO.StringIO()
# redirect stdout to a buffer
sys.stdout = buffer
# call the c code with ctypes
# process the buffer
# recover the old stdout
sys.stdout = sys.__stdout__
Sin embargo, sería más fácil y más agradable para pasar un buffer para el código C, y en vez de printf
-ing los valores de salida se escribirían en el tampón proporcionado.
O, mejor aún, usted podría pasar un byref
c_char_p
, asignar memoria para que dentro del código C
, actualizar la memoria intermedia con el valor de salida a continuación, utilizar el tampón en el Python
. No olvide desasignar la memoria (debe crear un contenedor ctypes
para la función free
).
¿Desea sobrecargar el C printf en Python? – luc
Si está sobrecargando, ¿en qué sistema operativo? – Arlaharen
Si la sobrecarga soluciona mi problema, lo intentaré. Yo uso Ubuntu 9.10. – Framester