मैं जावा के प्रोसेस बिल्डर का उपयोग लिनक्स में एक एप्लिकेशन लॉन्च करने की कोशिश कर रहा हूं जिसे "दीर्घकालिक" चलाना चाहिए। जिस तरह से यह प्रोग्राम चलता है वह एक कमांड लॉन्च करना है (इस मामले में, मैं एक मीडिया प्लेबैक एप्लिकेशन लॉन्च कर रहा हूं), इसे चलाने की अनुमति दें, और यह सुनिश्चित करने के लिए जांचें कि यह क्रैश नहीं हुआ है। उदाहरण के लिए, यह देखने के लिए जांचें कि पीआईडी अभी भी सक्रिय है या नहीं, और फिर प्रक्रिया समाप्त हो जाती है, अगर यह मर गई है।जावा प्रोसेसबिल्डर: परिणामस्वरूप प्रक्रिया
मुझे जो समस्या हो रही है वह यह है कि पीआईडी सिस्टम में जिंदा है, लेकिन आवेदन के लिए जीयूआई लटकता है। मैंने ProcessBuilder (cmd) .start() को एक अलग थ्रेड में स्थानांतरित करने का प्रयास किया, लेकिन ऐसा लगता है कि यह कुछ भी हल नहीं कर रहा है, जैसा कि मैंने आशा की थी कि यह होगा।
मूल रूप से परिणाम यह है कि, उपयोगकर्ता के लिए, प्रोग्राम अपरिपक्व हो गया है, लेकिन प्रक्रिया प्रक्रिया को चलाने वाली जावा प्रक्रिया को मारना वास्तव में प्रक्रिया को अपने सामान्य व्यवहार को फिर से शुरू करने की अनुमति देता है। इसका मतलब है कि जावा एप्लिकेशन में कुछ स्पॉन्डेड प्रोसेस के साथ हस्तक्षेप कर रहा है, लेकिन मुझे इस बात पर बिल्कुल कोई जानकारी नहीं है। (इसलिए मैंने इसे किसी अन्य धागे में अलग करने की कोशिश क्यों की, जो कुछ भी हल नहीं कर रहा था)
अगर किसी के पास कोई इनपुट/विचार है, तो कृपया मुझे बताएं, क्योंकि मैं अपने जीवन के लिए नहीं सोच सकता इस समस्या के समाधान के लिये।
संपादित करें: मुझे प्रक्रिया से बनाए गए I/O स्ट्रीम पर कोई चिंता नहीं है, और इस तरह से निपटने के लिए कोई कदम नहीं उठाया गया है - क्या यह प्रक्रिया में ही लटका सकता है?
चूंकि आपने पहले से ही कहा है कि आप प्रक्रिया की धाराओं से निपट नहीं रहे हैं, मुझे यह कहना चाहिए कि "हां, यह संभावना है कि यह समस्या का कारण है। पढ़ना महत्वपूर्ण है। stdout और stderr की सामग्री, और अगर बच्चा आपको उम्मीद करता है तो stdin को भी लिखें "। इस SO प्रश्न को जांचने के लिए आपके समय के लायक होंगे: http://stackoverflow.com/questions/882772/capturing-stdout-when-calling-runtime-exec/882795#882795 –