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

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

從 Java 代碼運(yùn)行 Unix shell 腳本,并處理提示

從 Java 代碼運(yùn)行 Unix shell 腳本,并處理提示

侃侃爾雅 2022-05-12 16:44:29
我有一個(gè)運(yùn)行 shell 命令的 Java 程序。一切正常,我可以查看命令是否有效或有錯(cuò)誤...除了命令提示用戶輸入更多信息時(shí)。例如,當(dāng)我運(yùn)行命令ssh-keygen -t rsa -b 4096 -f my_key_name時(shí),程序?qū)⒂肋h(yuǎn)旋轉(zhuǎn)而不返回給用戶,因?yàn)樗诘却逸斎朊艽a?,F(xiàn)在我知道我可以-P ""跳過我添加密碼,但我的問題是其他提示信息的命令。我只想知道如何將提示文本返回給用戶(因?yàn)槲也⒉徽嬲枰脩糨斎胨麄儗?duì)提示的響應(yīng)的能力)。RunCommandDto runCommandDto = new RunCommandDto();Runtime rt = Runtime.getRuntime();Process proc = rt.exec('ssh-keygen -t rsa -b 4096 -f my_key_name');BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));String output = "";while ((String sInOut = stdInput.readLine()) != null) {    output += sInOut + "\n";}while ((String sErr = stdError.readLine()) != null) {     output += sErr + "\n";}
查看完整描述

1 回答

?
繁華開滿天機(jī)

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

exec 進(jìn)程的stdin可以通過proc.getOutputStream() 您通過此流發(fā)送的所有內(nèi)容訪問,將通過其stdin傳遞給 ssh-keygen 進(jìn)程。

當(dāng)然,如果您不發(fā)送它所期望的那種輸入,該過程可能只是返回一些警告消息并繼續(xù)等待。您需要發(fā)送的內(nèi)容將在很大程度上取決于您將其發(fā)送到的過程。

另外:您正在通過讀取 InputStream 和錯(cuò)誤流來處理 ssh-keygen 的輸出。但是,您可能希望在單獨(dú)的線程中執(zhí)行此操作 - 就像您現(xiàn)在擁有的那樣,如果進(jìn)程在寫入 stdout 之前向 stderr 寫入太多,它可能會(huì)因?yàn)榫彌_區(qū)已滿而掛起......


查看完整回答
反對(duì) 回復(fù) 2022-05-12
  • 1 回答
  • 0 關(guān)注
  • 110 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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