c# - सी#बराक के बराबर()/exec()




.net process (2)

आप बाह्य प्रक्रियाओं को शुरू करने के लिए प्रक्रिया वर्ग का उपयोग कर सकते हैं इससे आप मनमाना कार्यक्रम शुरू कर देंगे

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx

मैं एक प्रोग्राम विकसित कर रहा हूं जिसके लिए बाहरी प्रोग्राम को कॉल करने की जरूरत है, लेकिन उसे निष्पादित करने के लिए इंतजार करना होगा। यह सी # में किया जा रहा है (जिस पर मैं नया हूँ, लेकिन सी ++, क्यूटी, और सी में बहुत सी अनुभव है) और बनाएँप्रक्रिया मुझे लगता है कि मैं क्या देख रहा हूं ऐसा प्रतीत नहीं होता है (प्रक्रिया शुरू होती है, फिर इसे भूल जाती है, जो मुझे ज़रूरत नहीं है)।

यह मेरी पहली विंडोज़ प्रोजेक्ट्स में से एक है (या कम से कम, सिर्फ विंडोज़ और निश्चित रूप से केवल .नेट) और मैं इस तरह की चीज़ को * निक के लिए करने के लिए और अधिक उपयोग कर रहा हूं जहां मैं कांटा का उपयोग करता हूँ और फिर बच्चे में exec, तब बच्चे को समाप्त करने की प्रतीक्षा करें लेकिन मुझे नहीं पता है कि यहां तक ​​कि ऐसा कुछ करने की तलाश शुरू करने के लिए।

ओह, और मुझे पूरा यकीन है कि मैं .NET में फंस गया हूँ क्योंकि मुझे इस प्रोजेक्ट को पूरा करने के लिए रजिस्ट्री तक पहुंच की आवश्यकता है और .नेट की रजिस्ट्री एक्सेस बिल्कुल अद्भुत है (मेरी राय में, मुझे इसकी तुलना करने के लिए कुछ भी नहीं है )।

धन्यवाद।


आप Process वर्ग का उपयोग कर सकते हैं। यह आपको इसके बारे में कुछ विकल्प निर्दिष्ट करने देता है कि आप इसे कैसे निष्पादित करना चाहते हैं, और एक ऐसी विधि भी प्रदान करता है जो आगे की कथन निष्पादित करने से पहले बाहर निकलने की प्रक्रिया का इंतजार करता है।

इस लिंक को देखें (एमएसडीएन संदर्भ): http://msdn.microsoft.com/fr-fr/library/system.diagnostics.process.aspx

मूल रूप से आप क्या कर सकते हैं:

 Process p;
 // some code to initialize it, like p = startProcessWithoutOutput(path, args, true);

 p.WaitForExit();

प्रक्रिया को आरंभ करने का एक उदाहरण (यह सिर्फ कुछ कोड है जो मैं एक बार कहीं प्रयोग किया है):

    private Process startProcessWithOutput(string command, string args, bool showWindow)
    {
        Process p = new Process();
        p.StartInfo = new ProcessStartInfo(command, args);
        p.StartInfo.RedirectStandardOutput = false;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.CreateNoWindow = !showWindow;
        p.ErrorDataReceived += (s, a) => addLogLine(a.Data);
        p.Start();
        p.BeginErrorReadLine();

        return p;
    }

जैसा कि आप इस कोड में देख सकते हैं आप कुछ आउटपुट रीडायरेक्शन भी कर सकते हैं, त्रुटि रीडायरेक्शन .... यदि आप क्लास में खोदते हैं तो मुझे लगता है कि आपको बहुत जल्दी मिल जाएगा कि आपको क्या चाहिए।





fork