Friday, 15 December 2017

प्रतीक्षाफ़ेन्क्षी मानक आउटपुट प्रक्रिया


एलीना: आपके उत्तर के लिए धन्यवाद। इस MSDN डॉक्टर (msdn. microsoften-uslibraryhellip) के निचले भाग में कुछ नोट्स हैं जो संभावित डेडलॉक के बारे में चेतावनी देते हैं यदि आप दोनों रीडायरेक्ट किए गए स्टडआउट और स्टर्डर धाराओं के अंत में पढ़ते हैं तो सिंक्रोनस रूप से। यह कहना मुश्किल है कि क्या आपका समाधान इस मुद्दे पर अतिसंवेदनशील है या नहीं। साथ ही, ऐसा प्रतीत होता है कि आप प्रक्रिया 39 stdoutstaderr आउटपुट को वापस इनपुट के रूप में भेज रहे हैं। क्यूं कर। ) ndash मैथ्यू पियाट 26 सितंबर 16 4:42 यह 4.5 और बाद के संस्करण के लिए एक और आधुनिक उम्मीदवार, कार्य समानांतर पुस्तकालय (टीपीएल) आधारित समाधान है। उपयोग का उदाहरण कार्यान्वयन 5 अक्टूबर को 10 बजे उत्तर दिया गया I बात यह है कि यह सरल और बेहतर तरीका है (हमें ऑटोआरससेट एवेन्ट की ज़रूरत नहीं है): उत्तर 14 जून 12 बजे 14:29 उत्तर दिया गया है, लेकिन आप ऐसा नहीं करना चाहिए. फ़ाइलनाम पथ quotggsci. exequot quot अपने कोड को सरल बनाने के लिए या शायद कुछ quotecho कमांड के बराबर path quotggsci. exequot का पालन करने के लिए obeycommand. txtquot का पालन करें अगर आप वास्तव में एक अलग obeycommand. txt फ़ाइल का उपयोग नहीं करना चाहते हैं ndash Amit Naidu Jun 4 13 at 22:03 आपके समाधान में ऑटोआरससेटएवेंट की ज़रूरत नहीं है लेकिन आप चुनाव करते हैं। जब आप इवेंट का उपयोग करने के बजाय पोल करते हैं (जब वे उपलब्ध होते हैं) तो आप बिना किसी कारण के लिए सीपीयू का उपयोग कर रहे हैं और इससे पता चलता है कि आप खराब प्रोग्रामर हैं AutoResetEvent का उपयोग करते हुए अन्य के साथ तुलना में आपका समाधान वास्तव में खराब है। (लेकिन मैंने आपको -1 नहीं दिया क्योंकि आपने मदद करने की कोशिश की है)। ndash एरिक Ouellet 7 नवंबर 14 पर 18:38 मैं एक ही मुद्दा रहा था, लेकिन कारण अलग था हालांकि यह विंडोज 8 के तहत होगा, लेकिन विंडोज 7 के तहत नहीं। निम्नलिखित पंक्ति ने समस्या का कारण देखा है। समाधान UseShellExecute को अक्षम करने के लिए नहीं था अब मुझे एक शेल पॉपअप विंडो मिली है, जो अवांछित है, लेकिन कुछ खास नहीं होने की प्रतीक्षा करने वाले कार्यक्रम से बेहतर है। तो मैंने इसके लिए निम्नलिखित कार्य-जोड़ा जोड़ा: अब मुझे केवल परेशानी का कारण यह है कि विंडोज 8 के तहत ऐसा क्यों हो रहा है पहली जगह पर। 13 जनवरी को 10:35 को उत्तर दिया मैंने एक ऐसा वर्ग बनाने की कोशिश की जो आपकी समस्या को हल करेगी जो अकसरसोनस स्ट्रीम का उपयोग करते हुए मार्क बियरर्स, रोब, स्टीवज्यू उत्तर लेते हुए आपकी समस्या को हल करेंगे। ऐसा करने से मुझे एहसास हुआ कि एसिंक्रोनस प्रोसेस आउटपुट स्ट्रीम से संबंधित एक बग पढ़ा गया है। आप ऐसा नहीं कर सकते: आपको सिस्टम प्राप्त होगा। अज्ञातऑपरेशन अपवाद मानकऑटो को पुनः निर्देशित नहीं किया गया है या प्रक्रिया अभी तक शुरू नहीं हुई है। फिर आपको प्रक्रिया शुरू होने के बाद एसिंक्रोनस आउटपुट को पढ़ना होगा: ऐसा करने से, रेस की स्थिति बनाओ क्योंकि आउटपुट स्ट्रीम आपको एसिंक्रोनस में सेट करने से पहले डेटा प्राप्त कर सकता है: तब कुछ लोग कह सकते हैं कि आपको स्ट्रीम से पहले ही पढ़ना होगा इसे अतुल्यकालिक से सेट करें लेकिन यही समस्या तब होती है तुल्यकालिक पढ़ने के बीच एक दौड़ की स्थिति होगी और स्ट्रीम को अतुल्यकालिक मोड में सेट किया जाएगा। वास्तविक प्रक्रिया में एक प्रक्रिया के आउटपुट स्ट्रीम के सुरक्षित असिंक्रोनस पठन को प्राप्त करने का कोई तरीका नहीं है, प्रक्रिया और प्रक्रिया स्टार्टइन्फो तैयार की गई है। आप संभावित रूप से अतुल्यकालिक पठन का उपयोग कर रहे हैं जैसे आपके केस के लिए अन्य उपयोगकर्ताओं द्वारा सुझाई गई। लेकिन आपको पता होना चाहिए कि आप रेस हालत सिस्टम के कारण कुछ जानकारी को याद कर सकते हैं। डायग्नोस्टिक्स। प्रोसेसस क्लास 8211 भाग 1 प्रोसेस। वेटफॉरएक्सिट और अजीब इवेंट isn8217t काम करना मैंने सोचा था कि मुझे यह मामला माना गया है, लेकिन यह मेरी गलती थी, शायद तुम्हारे लिए भी यही है इस मुद्दे को तलाशने और सुलझाने के दौरान मैंने जो कुछ पाया है, उस पर मैं जाउंगा। संक्षिप्त उत्तर: यदि आप मानक आउटपुट और मानक ईरोड को पुनः निर्देशित कर रहे हैं, तो सबसे अच्छा एसिंक्रोनस प्रक्रिया का उपयोग करें। BeginErrorReadLine () और। BeginOutputReadLine () विधियां कॉल करने से पहले। WaitForExit () और प्रक्रिया को hooking करके आउटपुट को कैप्चर करते हैं। ErrDataReceived और. OutputDataReceived events बैच मोड में पाठ फ़ाइलों की तुलना करने के लिए Common7IDE फ़ोल्डर में Visual Studio diffmerge. exe का उपयोग करते हुए मेरे साथ लंबे उत्तर प्रारंभ होता है। मैं एक निर्माण शुरू बैच प्रक्रिया में एक प्रतिगमन परीक्षण शुरू कर रहा हूँ मुझे एक उपकरण की ज़रूरत है जो दो फाइलों की तुलना करते समय एक टेक्स्ट फ़र्क फ़ाइल को थोप देता है (मर्ज परिणाम फ़ाइल नहीं)। WinMerge और Beyond तुलना मेरे निपटान में हैं, लेकिन वे कुछ भी प्रतीत नहीं होते हैं, मर्ज किए गए परिणाम (जो आम तौर पर मैं क्या चाहता हूं, लेकिन इस बार नहीं)। मेरे प्रतिगमन ढांचे को diffmerge. exe कहते हैं और बाद की समीक्षा के लिए परिणामी डीफफ फ़ाइल को संग्रहीत करते हैं। मैंने अपनी प्रोसेस्टस्टटाइन्फ़ो को कोडित किया है कि प्रक्रिया को समाप्त करने के साथ और प्रक्रिया समाप्त होने के लिए प्रतीक्षा कर रहा है। और प्रतीक्षा इंतजार इंतजार कर। यह मुझे एमएसडीएन पढ़ने और प्रक्रिया वर्ग के उपयोग में गहरी खोदने मिला। मुझे कुछ रोचक जानकारी मिल गई है, शायद स्पष्ट होनी चाहिए। सबसे पहले, मैंने पाया कि कभी-कभी अलग-अलग तर्कों के साथ अलग-थलग बच्चे प्रक्रिया चलती है, कभी-कभी यह नहीं था, इस मुद्दे को रहस्यमय बना दिया दूसरा, मैंने पाया कि यह ठीक काम करता है जब मैंने आउटपुट रीडियोड किया था I8217 तो, जाहिर है मैं कुछ खो गया था मुझे वास्तव में प्रोसेस एपीआई दस्तावेज़ों को पढ़ने की जरूरत है, और इस प्रकार मुझे इस सोने का डला मिला: MSDN Article यदि मेरा स्टडीओट या स्टड एरर बफर भरता नहीं है तो मेरा कोड नमूना काम करेगा। हालांकि, जो मैं देख रहा था वह स्टड आउट बफर भरना था, बाल प्रक्रिया को अगले स्टैडऑप्टएसटीईआरर लिखें पर अवरुद्ध किया गया था, माता-पिता प्रक्रिया STDOutStdError बफर से पढ़ने से पहले बाल प्रक्रिया पर असीम प्रतीक्षा कर रहा था। मेरे लिए ऐसा प्रतीत होता है कि WaitForExit विधि और बाहरी घटना टूटने से बचने वाली बाल प्रक्रिया को नहीं पकड़ रही है, हालांकि यह मेरा कोड था जो टूट गया था। मैंने कोड को अतुल्यकालिक विधियों का उपयोग करने के लिए संशोधित किया और अचानक मेरी समस्याएं दूर चली गईं। कोई और अवरुद्ध नहीं, सब कुछ अपेक्षित के रूप में काम किया मैंने स्ट्रिंगब्यूल्डर को घटनाओं में प्राप्त आंकड़ों को पकड़ने के लिए बफ़र के रूप में इस्तेमाल किया। भाग 2 में, मैं अपनी विशिष्ट ज़रूरतों के आसपास प्रोसेस स्टडऑप्टएस्ड्रूट रीडलाइन कार्यान्वयन के साथ एक समस्या में चला जाता हूं, मैं उस मुद्दे पर कैसे हल करता हूं?

No comments:

Post a comment