我創建了一個名稱管道,我想溝通一個python進程和一個java進程。 Java過程是一個遊戲過程。當更新函數被調用時,我想檢查命名管道是否有任何要讀取的數據。但是如果我調用FileInputStream.read(),過程將會阻塞。是否有任何疏通的方式來檢查管道可以讀取的天氣我怎樣才能知道一個命名管道有數據讀取在Linux上的java
0
A
回答
0
您可以撥打available()
method。如果它返回一個非零值,你可以讀取很多字節而不會阻塞。如果它返回零,沒有輸入可用。
或者,您可能不希望重複檢查輸入是否可用,而是可能對NIO Selector
類感興趣,該類可等待帶有超時的輸入。 (但是,你需要改變你的程序中使用NIO通道而不是InputStream
的。)
0
簡單的方法:
啓動一個單獨的Thread
,讓在FileInputStream
是Thread
塊和信號時,它已經閱讀(或許通過將數據在Queue
或BlockingQueue
已經閱讀
更復雜的方式:
(但更靈活,特別是如果您有多個不想阻止的輸入源時)。
使用java.nio.channels.FileChannel
打開命名管道,並使用java.io.channels.Selector
輪詢輸入數據變爲可用。
相關問題
- 1. ?我怎樣才能從雙軌道上
- 2. 我怎樣才能知道當一個WCF操作被稱爲
- 3. 我怎樣才能知道具體的ProcessName是沒有崩潰
- 4. 命名管道(matlab-> Linux)的短讀
- 5. 我怎樣才能拆分和管道多個NAudio流
- 6. 我怎樣才能做一個shell腳本,知道我連接了在Ubuntu
- 7. 我怎樣才能知道在Android中滑動viewPager
- 8. 我怎樣才能阻止寫入管道重新配置管道?
- 9. Linux上的MySQL,PHP和命名管道
- 10. 我怎樣才能獲得數組數據源,劍道網格?
- 11. 我怎樣才能以編程方式知道我的iPhone的名字
- 12. 我怎樣才能知道DataInput的大小?
- 13. 我怎樣才能知道值CABasicAnimation的keyPath
- 14. 我怎樣才能讀取在JavaScript
- 15. 我怎樣才能知道它的同一個用戶,但不同的IP。
- 16. UNIX/Linux IPC:從管道讀取。如何知道運行時的數據長度?
- 17. 我怎樣才能在golang的未知類型的通道上搜索
- 18. 我怎麼能知道一個PrintWriter
- 19. 命名管道讀取器的限制
- 20. 我怎樣才能知道哪些提交按鈕被點擊
- 21. 我怎樣才能知道什麼時候執行Redux動作
- 22. 我怎樣才能知道哪些Python源文件被執行?
- 23. 我怎樣才能知道p0是什麼?
- 24. 我怎樣才能知道這是做什麼?
- 25. 我怎樣才能知道詹金斯構建狀態
- 26. 在java中我應該知道怎樣才能創建桌面應用程序?
- 27. java中的命名管道
- 28. 在Windows上命名管道
- 29. 從命名管道連續讀取
- 30. 使用istream從命名管道讀取