这个问题与this one非常相似。我想从我的控制台应用程序读取输出。stdin不接受应用程序的输入。在
当我修改rix0rrr的解决方案来执行我的应用程序,然后运行他的解决方案时,Python会挂起,因为read(1)没有返回。应用程序的初始输出是“正在启动服务器。\n”。你能猜到我的应用程序可能有什么属性阻止了他的解决方案的工作吗?我改变的程度是我改变了这一点:
p = Popen( ["cmd.exe"], stdin=PIPE, stdout=PIPE )
prompt = re.compile(r"^C:\\.*>", re.M)
为此:
^{pr2}$我还创建了一个应用程序的测试版本,该版本立即返回,并验证了在这种情况下,应用程序的输出是由read()返回的。正如预期的那样,他最初的、未经修改的示例也没有挂起。在
我还尝试了Piotr在回答中链接的ActiveState代码。在这种情况下,进程也不会返回任何输出。在
这是Vista上的Python2.4.4。在
我要检查的第一件事就是缓冲应用程序.exe. 如果“Starting the server.\n”正在被缓冲,并且不能进入管道,那么在读卡器方面,您无能为力。在
所以,尝试在
printf("Starting the server.\n")
之后添加fflush(stdout)
。在相关问题 更多 >
编程相关推荐