2010-02-04 64 views
1

我有第三方java程序叫做kgsgtp.jar,它需要與我自己的C++(但主要是C)程序進行通信。對於Java程序狀態的文檔:兩個程序之間的輸入輸出通信

=====================

你只需要確保標準輸入kgsGtp它連接到 發動機的輸出和kgsGtp的標準輸出連接到發動機的 輸入。通常情況下,最簡單的方法是從引擎內分叉並排除 千克。

=====================

現在,我是一個有能力的程序員,覺得我大概可以安排一切,鑑於短短更多線索。我懷疑如果描述擴展到erm,10?行,而不是三個半,然後我會立即排序。

我猜這是什麼文件意思是分叉,在我的程序中使用WinExec()或CreateProcess()來執行Java程序?我也猜測,也許當我使用正確的功能時,那麼一個程序的stdin對應於另一個stdout的事實會自動發生?

+0

我認爲解釋是UNIX環境。 – 2010-02-04 09:55:18

+0

http://peterflow.com/questions/2186648/stdin-stdout-communication-between-java-program-and-c-program-under-64-bit-window昨天被同一用戶詢問 – 2010-02-04 10:11:20

+0

@neil。不,這不對。 Java程序允許多種方法啓動通信。首先是失敗,所以現在我試圖讓另一種方法工作。 – Mick 2010-02-04 10:26:12

回答

4

這樣的描述是unix系統,其中管(),DUP2(),叉()/ EXEC()的調用序列會用來做到這一點。

看看denis的答案中的代碼片段:How do I get console output in C++ with a Windows program?,應該讓你開始吧。

編輯:更完整的例子是在這裏:http://support.microsoft.com/kb/190351

+0

看起來很有希望......讓我再仔細檢查一下,我對此有所瞭解。在他的代碼中,當你到達註釋「// readfile和/或writefile」......這是否意味着從現在開始,我所做的任何printf()都會轉到teste.exe的stdin,反之亦然? – Mick 2010-02-04 10:12:39

+0

不,這意味着從hRead句柄中讀取teste.exe的stdout/err。那裏的例子並沒有掛接teste.exe的stdin,但它會是類似的 - 創建另一個管道並在STARTUPINFO結構中設置hStdInput。添加了另一個示例的鏈接。 – Anonym 2010-02-04 10:36:19

+0

感謝您的幫助。 – Mick 2010-02-04 10:55:44

0

你需要的是等效的POSIX DUP的()在Windows上可能是this