第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

獲取 BufferedReader.readLine() 等待輸入

獲取 BufferedReader.readLine() 等待輸入

www說 2021-06-29 13:57:16
我有一個(gè)從 Java ProcessBuilder 線程開始的 Python 服務(wù)器。Java 程序應(yīng)等待服務(wù)器準(zhǔn)備就緒后再繼續(xù)。當(dāng)服務(wù)器準(zhǔn)備好時(shí),它會輸出一條“服務(wù)器就緒”消息,我假設(shè)它是由 Process 對象的 InputStream 接收的。START_SERVER_COMMAND = TAGGERFLOW_HOME + "server.py";server = new ProcessBuilder().inheritIO().command("python", START_SERVER_COMMAND, "" + portNum,        config.featOrderName(), config.childOrderName(), "" + maxBeta).start();System.out.println("Hypertagger server started");LOGGER.log(Level.INFO, "Hypertagger server started");String line = null;while(line == null) {    line = new BufferedReader(new InputStreamReader(server.getInputStream())).readLine();    if(line == null)        Thread.sleep(5000);}System.out.println("Exit loop");但是,line始終為空,因此 Java 永遠(yuǎn)不會退出循環(huán)。這很可能表明我對 InputStream 接收“服務(wù)器就緒”消息的假設(shè)是錯(cuò)誤的,但我不知道為什么會這樣。我正在尋找一種方法來獲取“服務(wù)器就緒”消息,或者尋找一種更好的方法來檢測服務(wù)器何時(shí)就緒。任何幫助,將不勝感激。編輯在此之前,我嘗試在循環(huán)之前初始化 BufferedReader。它有相同的行為。
查看完整描述

1 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

如果您希望 Java 程序捕獲輸出,請不要將輸出重定向到其他地方,即不要調(diào)用inheritIO(),盡管您可能想調(diào)用redirectErrorStream(true).


你覺得有什么inheritIO()作用?

將子進(jìn)程標(biāo)準(zhǔn) I/O 的源和目標(biāo)設(shè)置為與當(dāng)前 Java 進(jìn)程的源和目標(biāo)相同。

這是一種方便的方法。表單的調(diào)用

pb.inheritIO()

行為方式與調(diào)用完全相同

pb.redirectInput(Redirect.INHERIT)
  .redirectOutput(Redirect.INHERIT)
  .redirectError(Redirect.INHERIT)

當(dāng) I/O 被重定向時(shí),你認(rèn)為getInputStream()會發(fā)生什么?

返回連接到子進(jìn)程正常輸出的輸入流。流從該Process對象所代表的進(jìn)程的標(biāo)準(zhǔn)輸出中獲取管道傳輸?shù)臄?shù)據(jù)。

如果子進(jìn)程的標(biāo)準(zhǔn)輸出已使用重定向,ProcessBuilder.redirectOutput此方法將返回空輸入流

應(yīng)該很明顯,但什么是空輸入流

標(biāo)準(zhǔn)輸出標(biāo)準(zhǔn)錯(cuò)誤的目的地。默認(rèn)情況下,子進(jìn)程將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤寫入管道。Java 代碼可以通過Process.getInputStream()和返回的輸入流訪問這些管道Process.getErrorStream()。但是,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤可能會使用redirectOutput和重定向到其他目的地redirectError。在這種情況下,Process.getInputStream()和/或Process.getErrorStream()將返回一個(gè)空輸入流,為此:

  • read方法總是返回-1

  • available方法總是返回0

  • close方法什么都不做


查看完整回答
反對 回復(fù) 2021-07-14
  • 1 回答
  • 0 關(guān)注
  • 274 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號