我希望这很简单,只是我在教程中没有找到。我正在编写Python代码来“监视”C代码,也就是我用ctypes从Python运行C代码。现在我想“捕获”C语言的“printfs”以处理由C代码输出的数据。有任何想法如何做到这一点吗?谢谢。
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__
printf
输出值,您可以将其写入提供的缓冲区。byref
传递一个c_char_p
,在C
代码中为其分配内存,更新缓冲区以输出值,然后在Python
中使用该缓冲区。不要忘记释放内存(您应该为free
函数创建一个ctypes
包装器)。printf
简单地将其输出写入到 stdout
文件指针所指向的位置。我不确定您是如何执行 C 程序的,但应该可以将 C 程序的 stdout
重定向到您可以在 Python 中读取的某个位置。