使用Python调试Windows控制台应用程序的输出读取

2024-09-29 00:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题与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。在


Tags: 版本re服务器应用程序read属性stdin情况
1条回答
网友
1楼 · 发布于 2024-09-29 00:15:52

我要检查的第一件事就是缓冲应用程序.exe. 如果“Starting the server.\n”正在被缓冲,并且不能进入管道,那么在读卡器方面,您无能为力。在

所以,尝试在printf("Starting the server.\n")之后添加fflush(stdout)。在

相关问题 更多 >