2009-08-17 4 views
11

मैं प्रोसेस क्लास का उपयोग कर सी # में एक प्रक्रिया चलाने की कोशिश कर रहा हूं।सी # रीडायरेक्ट (पाइप) प्रक्रिया आउटपुट को दूसरी प्रक्रिया में

Process p1 = new process(); 
p1.startinfo.filename = "xyz.exe"; 
p1.startinfo.arguments = //i am building it based on user's input. 
p1.start(); 

तो उपयोगकर्ता इनपुट के आधार पर मैं तर्क मान बना रहा हूं। अब मेरे पास एक मामला है जहां मुझे पी 1 के उत्पादन को दूसरी प्रक्रिया में पाइप करना है grep कहते हैं। तो मैंने मूल रूप से इस

p1.startinfo.arguments = "-info | grep 1234" की कोशिश की;

मैं क्या इरादा xyz.exe -info की तरह कुछ है | ग्रेप 1234

लेकिन यह .net में काम करने के लिए प्रतीत नहीं होता है .. मैं वास्तव में एक अलग रूप में किसी अन्य प्रक्रिया चर और चलाने "grep" बना सकते हैं प्रक्रिया .. लेकिन मैं सोच रहा था कि अगर मैं ऊपर से कोशिश कर रहा हूं तो ऐसा करने का कोई तरीका है ..

+0

मुझे यह ब्लॉग आलेख मिला जो वास्तव में इस प्रश्न को शामिल करता है: [प्रक्रिया/प्रक्रिया स्टार्टइन्फो कक्षाओं पर पाइप आउटपुट पुनर्निर्देशन का उपयोग ...] (http://weblogs.asp.net/justin_rogers/archive/2004/02/27/ 81370.aspx) –

+0

यदि आप सीएमडी का उपयोग नहीं करना चाहते हैं, तो [MedallionShell] (https://github.com/madelson/MedallionShell) लाइब्रेरी देखें। यह प्रक्रिया धारा पुनर्निर्देशन (और प्रक्रिया प्रबंधन के अन्य पहलुओं) को बहुत आसान बनाता है। – ChaseMedallion

उत्तर

19

आपके प्रक्रिया के रूप में केवल cmd का उपयोग करना बहुत आसान तरीका होगा।

Process test = new Process(); 
test.StartInfo.FileName = "cmd"; 
test.StartInfo.Arguments = @"/C ""echo testing | grep test"""; 
test.Start(); 

आप आउटपुट को कैप्चर कर सकते हैं या फिर आप किसी भी सामान्य प्रक्रिया को कैप्चर कर सकते हैं। यह सिर्फ एक त्वरित परीक्षण था जिसे मैंने बनाया था, लेकिन यह कंसोल पर परीक्षण आउटपुट करने में काम करता है, इसलिए मुझे उम्मीद है कि यह किसी भी चीज के लिए काम करेगा जो आप पाइपिंग के साथ करने की योजना बना रहे हैं। यदि आप कमांड को खोलने के लिए चाहते हैं तो/सी के बजाय/K का उपयोग करें और प्रक्रिया खत्म होने के बाद विंडो बंद नहीं होगी।

+0

धन्यवाद आपने मेरा दिन बचाया :) – FatDaemon

+1

मुझे linux पर cmd के बिना एक ही चीज़ करने की आवश्यकता है। मैं लक्ष्य प्रक्रिया के StreamWriter के साथ स्रोत प्रक्रिया के StreamReader को कैसे कनेक्ट कर सकता हूं? –

+1

और लिनक्स में ऐसा कैसे करें? :) – knocte