2010-08-16 119 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,它將讀取直到文件句柄關閉,即直到程序退出。直到那時它纔會回來。

從腳本中可以做到這一點,只要您知道程序在每種情況下都會創建什麼輸出。

在大多數情況下,如果可能的話,最好將程序設置爲非交互式「批處理」模式,程序接受命令但無需響應提示。

相關問題