मैं जावा से एक प्रक्रिया लॉन्च करना चाहता हूं, इसके आउटपुट को पढ़ना चाहता हूं, और इसके रिटर्न कोड प्राप्त करना चाहता हूं। लेकिन जब यह निष्पादित हो रहा है, तो मैं इसे रद्द करने में सक्षम होना चाहता हूं। मैं इस प्रक्रिया शुरू करके बाहर शुरू:जावा से बाहरी प्रोग्राम चलाएं, आउटपुट पढ़ें, बाधा
ProcessBuilder pb = new ProcessBuilder(args);
pb.redirectErrorStream(true);
Process proc = pb.start();
अगर मैं proc.waitFor फोन(), मैं इस प्रक्रिया से बाहर निकलता है जब तक कुछ नहीं कर सकते। तो मुझे लगता है कि मुझे ऐसा कुछ करने की ज़रूरत है:
while (true) {
see if process has exited
capture some output from the process
decide if I want to cancel it, and if so, cancel it
sleep for a while
}
क्या यह सही है? क्या कोई मुझे जावा में ऐसा करने का उदाहरण दे सकता है?
यदि कुछ समय के लिए कोई आउटपुट नहीं है तो क्या होगा?क्या यह ब्र्रेडलाइन() पर लटका नहीं होगा जब तक कि पढ़ने के लिए तैयार कोई लाइन न हो? मुझे यकीन नहीं है कि मेरी प्रक्रिया कितनी या कम आउटपुट भेजेगी। –
गो पॉइंट। प्रक्रिया को रोकने के लिए आप विश्लेषण करने के लिए एक अलग धागा बना सकते हैं। यह थोड़ी देर के लिए समानांतर चला सकता है और प्रक्रिया को नष्ट कर सकता है अगर यह कुछ समय (या किसी अन्य स्थिति) के लिए लटकता है। –
(मेरा मतलब था "अच्छा बिंदु") –