我正在使用通过ctypes模块调用的共享库。我想将与该模块相关联的stdout重定向到一个变量或文件中,以便在我的程序中访问。然而,ctypes使用与sys.stdout分离的单独的stdout。
我将用libc演示我遇到的问题。如果有人复制并粘贴代码,则可能需要更改第2行上的文件名。
有没有办法捕获与ctypes加载的共享库相关联的stdout输出?
我将用libc演示我遇到的问题。如果有人复制并粘贴代码,则可能需要更改第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()
有没有办法捕获与ctypes加载的共享库相关联的stdout输出?