2010-08-16 90 views
0

我有一个小型的C++控制台应用程序,它显示一个菜单,然后执行选定的操作。启用控制台应用程序的输出到脚本

另外,我写了一个运行在StdOut上的VBScript(通过Exec实现)并输入到StdIn的值中。

但是,当我试图执行此脚本时,控制台应用程序停留在scanf调用中,并且脚本没有从输出接收任何内容。 _flushall()没有帮助。

有没有人有任何想法?

谢谢。

+0

VBScript甚至可以做到这一点?您至少需要发布代码,以显示如何启动C++程序以及如何写入stdout。 – 2010-08-16 08:01:20

+0

谢谢你,汉斯。 C++代码由简单的printf()(写入标准输出,在控制台应用程序转到屏幕的情况下)和scanf()(从标准输入读取)调用。 – 2010-08-16 08:41:45

+0

你确定你写的管道是脚本的stdin吗?代码会有帮助。 – 2010-08-16 09:17:03

回答

0

从VBScript/Windows脚本主机这是非常困难的,因为没有非阻塞IO。换句话说,没有办法说“读取现在可用的内容,然后立即返回”。

  • 如果您说ReadLine,它将读取一行。如果现在没有准备就绪,它将等待一个。
  • 如果您说ReadAll,它将读取直到文件句柄关闭,即直到程序退出。直到那时它才会回来。

从脚本中可以做到这一点,只要您知道程序在每种情况下都会创建什么输出。

在大多数情况下,如果可能的话,最好将程序设置为非交互式“批处理”模式,程序接受命令但无需响应提示。

相关问题