【发布时间】:2016-07-11 21:13:17
【问题描述】:
我有以下 python 代码
import ctypes
import sys
dll = ctypes.CDLL('./file.so')
if __name__ == "__main__":
dll.myFunction()
函数 myFunction 等待一个标准输入,所以我的问题是:如何使用 python 模拟这个输入?
【问题讨论】:
-
这可能会有所帮助:stackoverflow.com/questions/510357/…
-
您会发现许多变体的解决方案是用管道临时替换当前的标准输入。首先保存当前标准输入的副本,例如
old_stdin = os.dup(sys.stdin.fileno())。然后创建一个管道,例如fd_read, fd_write = os.pipe(),并将读取端设置为新的标准输入,例如os.dup2(fd_read, sys.stdin.fileno())。在致电myFunction之前,请通过os.write写信给fd_write。调用函数后,使用os.dup2(old_stdin, sys.stdin.fileno())恢复原来的标准输入,并通过os.close关闭old_stdin和管道文件描述符。