मैं जावा के साथ बाहरी रूप से एक प्रक्रिया शुरू करने की कोशिश कर रहा हूं और इसके इनपुटस्ट्रीम से कुछ भी नहीं पढ़ सकता।जावा प्रक्रिया से इनपुटस्ट्रीम पढ़ने में असमर्थ (Runtime.getRuntime()। Exec() या ProcessBuilder)
यदि मैं "एलएस", "पीएस" या "मार" जैसे कमांड के साथ एक प्रक्रिया शुरू कर रहा हूं तो सब ठीक काम करता है। मैं प्रक्रिया शुरू कर सकता हूं और या तो इनपुटस्ट्रीम या प्रक्रिया के त्रुटि प्रवाह पर जानकारी प्राप्त कर सकता हूं।
यदि मैं "ftp" या "टेलनेट" जैसे कमांड का उपयोग करने का प्रयास करता हूं तो इनपुट इनपुट और त्रुटि स्ट्रीम दोनों पढ़ने के लिए प्रयास करते समय मेरे प्रोग्राम को अवरुद्ध कर रहे हैं। किसी भी समय इन धाराओं के माध्यम से कोई जानकारी नहीं दी जाती है।
क्या कोई व्यक्ति व्यवहार को समझा सकता है? क्या इन आदेशों के साथ यह संभव नहीं है या क्या मुझे अपने कार्यान्वयन के साथ कोई समस्या है?
String processName = _configuration.getProgramCommand().getCommand();
ProcessBuilder procBuilder = new ProcessBuilder(processName);
System.out.println("Starting process "+processName);
_proc = Runtime.getRuntime().exec(processName);// procBuilder.start();
if(!procBuilder.redirectErrorStream()) {
_errorWorker = new ProcessErrorWorker(_proc);
_errorWorker.start();
}
String proc_start_answer = _configuration.getNextCommand().getCommand();
System.out.println("Waiting for process answer '"+proc_start_answer+"'");
BufferedReader input = new BufferedReader(new InputStreamReader(_proc.getInputStream()));
String answer = "";
try {
System.out.println("inputstream ready: "+input.ready());
answer+=input.readLine();
System.out.println("process answer: "+answer);
input.close();
} catch(Exception e) {
System.out.print(e.getMessage());
}
क्या आपको यह समस्या हल हो गई? क्या आप समाधान में पोस्ट कर सकते हैं? –