2010-07-23 52 views
2

我目前正在寫的東西來解決這個Java漏洞:如何通過Java中的套接字獲取錯誤流?

http://bugs.sun.com/view_bug.do?bug_id=5049299

基本上,我已經得到了同樣的機器在Java服務器上運行的輕質C服務器。當我可以請求它通過套接字fork /運行一個新進程並傳回stdin/stdout/stderr時,我正在向C服務器添加一個功能。在Java方面,我創建了一些模仿ProcessBuilderRuntime.exec()的行爲,但通過套接字。

問題出現在stderr。 Java套接字沒有錯誤流,所以在如何恢復它方面我有點不知所措。我想出了兩種解決辦法:

  1. 創建第二個插槽(可能從C服務器返回給Java 服務器 )凡在我剛剛發送標準錯誤 回來了。
  2. 交織處理的輸出 與 過程的標準錯誤,然後在 在Java除了解析它們放回獨立的流

這兩種解決方案具有固有的問題,所以我很樂意聽到任何反饋任何人都有。

獎金:給我一個簡單的,有保證的Java錯誤解決方案,不涉及我這樣做,我將永遠是你最好的朋友。

回答

0

爲了解決這個問題,我利用了兩臺服務器在同一臺機器上運行的事實。我只是把stderr寫到我在其他服務器上讀取的文件中。不是世界上最優雅的解決方案,但很簡單,它的工作原理。