首頁 >Java >java教程 >如何可靠地處理 Java 進程中的輸入/輸出流?

如何可靠地處理 Java 進程中的輸入/輸出流?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-17 21:16:11774瀏覽

How to Reliably Handle Input/Output Streams in Java Processes?

帶有輸入/輸出流的 Java 進程

本文探討了在使用 Java 進程時利用輸入和輸出流的複雜性。我們將特別關註解決在維護這些流的功能時遇到的挑戰。

背景

提供的程式碼範例舉例說明了一個場景,其中可以將命令輸入到 bash shell 中,隨後的輸出為迴聲。然而,在初次讀取後就會出現問題,導致後續輸出流無法操作。本文旨在闡明這些問題並提出解決方案。

解決問題

第一步涉及修改程式碼片段以利用 ProcessBuilder 類,這簡化了外部流程執行。它的主要優點是能夠將子程序的標準錯誤流重定向到其標準輸出。

此外,負責讀取進程標準輸出的循環很容易掛起,因為它們僅在結束時終止來自閱讀器的檔案。為了解決這個問題,採用了一種涉及「魔法」線的技術來劃分 shell 命令輸出的結論。

限制

必須承認這種方法的限制:

  • 提示使用者輸入的命令可能會導致程式出現無回應。
  • 每個進程輸出都以換行符終止的假設可能並不在所有情況下都成立。
  • 執行的命令輸出「--EOF--」的罕見情況可能會導致錯誤的行為。
  • bash 命令中不匹配的括號可能會導致語法錯誤和進程

結論

本文概述的更改為使用Java 進程時維護輸入/輸出流功能所遇到的挑戰提供了全面的解決方案。雖然該技術可能有一定的局限性,但它提供了一種可靠的方法來執行 shell 命令並透過計劃任務定期檢索其輸出。

以上是如何可靠地處理 Java 進程中的輸入/輸出流?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn