Sie könnten stdout
abfangen, bevor Sie von Ihrem C
Code geschrieben werden, dann verarbeiten Sie den Ausgabewert.
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__
Allerdings wäre es einfacher und schöner sein, einen Puffer zu dem C-Code zu übergeben, und statt printf
die Ausgangswert -ing würden Sie sie in dem mitgelieferten Puffer schreiben.
Oder, noch besser, Sie byref
ein c_char_p
, weisen Speicher für sie innerhalb des C
Code, aktualisieren Sie den Puffer mit dem Ausgangswert dann mit dem Puffer in Python
passieren könnten. Vergessen Sie nicht, den Speicher freizugeben (Sie sollten einen ctypes
Wrapper für die free
Funktion erstellen).
Möchten Sie das C printf in Python überladen? – luc
Bei Überladung, auf welchem OS? – Arlaharen
Wenn Überladung mein Problem lösen würde, würde ich versuchen. Ich benutze Ubuntu 9.10. – Framester