我想將一些輸入字符串設置爲stdin,以便另一個進程可以讀取stdin作爲輸入。我用Java BufferedWriter
。但是,如果輸入字符串大於管道大小或其他進程不讀取,我該如何處理這種情況?是否有API來檢查管道是否可用於寫入?Java BufferedWriter.write
0
A
回答
1
但我怎麼處理的情況下,當輸入字符串比管道尺寸
你不必做大。它會阻塞,直到空間可用。
或其他進程不讀取?
再次,您將阻止,直到空間可用。如果其他進程沒有讀取,那是另一個進程中的一個錯誤。
是否有API來檢查管道是否可用於寫入?
不。這是Java阻塞的I/O。它阻止。 Java不提供任何其他方式來寫入進程的輸入,或查看阻塞寫入是否會阻塞。
我有一個代碼審查反饋說寫會如果沒有一個是從它
讀取被阻塞,這是正確的,但他們怎麼指望你做什麼呢?它阻止了I/O,這就是它的工作原理。問問他們他們期望你怎麼做。
NB stdin
是輸入的名稱,而不是輸出的名稱。不要將輸入的名稱用於輸出流。它被輸入到另一個進程,但輸出給你的。我不會稱之爲stdout
,它不是你的stdout
。如果需要更多的特殊性,我只會將其稱爲out
或processOut
。
相關問題
- 1. 推遲BufferedWriter.write到另一個線程
- 2. 使用索引遍歷Java地圖
- 3. 的Java,MalformedChunkCodingException
- 4. Android to JAVA SSL
- 5. 使用java的流密碼
- 6. 如何將stdin重定向到java Runtime.exec?
- 7. php java android POST方法問題
- 8. java - 從文本文件讀取散列表
- 9. 如何使用Java中的FileWriter寫入新行?
- 10. Java,Java VM,Java平臺,
- 11. Java Servlet和Java
- 12. 的Java:從Java
- 13. Java Wild java javax.ejb.EJBException
- 14. java中的java beans
- 15. 使用Java的Java
- 16. Java的含義.java〜
- 17. Java - NoClassDefinitionFoundError for Java Class
- 18. Java,FileWriter(文件,true)不可追加到文件
- 19. 有缺陷的密碼凱撒java程序
- 20. (java)
- 21. Java
- 22. 的Java SE和Java EE
- 23. Java的Java中多比較
- 24. java堆滿Java finalize()調用
- 25. 從Java GUI到Java Web
- 26. 「java」成功,「java emmarun」失敗
- 27. spring rmi java 1.4和java 1.5
- 28. Java Web Start與Java Applet
- 29. 原生Java到Android Java(JsonPath)
- 30. 遞歸反向Java Java
爲什麼,你得到一個錯誤? –
該進程應該從stdin中主動讀取,這將清除緩衝區中的空間。正如馬丁所說,你在這裏遇到了一個問題嗎? – dimo414
不是,但只是爲了積極主動,因爲我得到了一個代碼審查反饋,說如果沒有人閱讀它,寫入將被阻止 – JennyS