मैं विंडोज में सभी खुले नाम वाले पाइपों की सूची कैसे प्राप्त कर सकता हूं?


86

क्या यह परीक्षण करने का एक आसान तरीका है कि आपका नामित पाइप सही तरीके से काम कर रहा है या नहीं? मैं यह सुनिश्चित करना चाहता हूं कि जो डेटा मैं अपने ऐप से भेज रहा हूं वह वास्तव में भेजा जा रहा है। क्या सभी नामित पाइपों की सूची प्राप्त करने का एक त्वरित और आसान तरीका है?

जवाबों:


95

आप इन्हें sysinternals के प्रोसेस एक्सप्लोरर के साथ देख सकते हैं । "Find -> Find Handle or DLL ..." विकल्प का उपयोग करें और "\ Device \ NamedPipe \" पैटर्न दर्ज करें। यह आपको दिखाएगा कि किन प्रक्रियाओं में कौन से पाइप खुले हैं।


इससे पहले कि आप इसे आज़माएं, प्रोसेस एक्सप्लोरर का कौन सा संस्करण देखें। यह v15.23 पर काम नहीं करता है, लेकिन v16.02 पर काम करता है। (अन्य संस्करणों की कोशिश नहीं की है)
कार्ल

2
संभावित अपवादों से बचने के लिए - जैसा कि अन्य उत्तरों में उल्लिखित है - आप मेरे समाधान का उपयोग कर सकते हैं जो कि अधिक निम्न स्तर का है, लेकिन एक आकर्षण की तरह काम करना भले ही नाम के पाइप में फ़ाइल के नाम के रूप में अमान्य वर्ण हों। कृपया देखें stackoverflow.com/questions/25109491/…
user2126375

2
pipelist.exeSysInternals से उपयोग करना और भी सरल है, लेकिन यह केवल कमांड लाइन है।
क्रिस चारबारुक

79

विंडोज पॉवर्सशेल कंसोल में, टाइप करें

[System.IO.Directory]::GetFiles("\\.\\pipe\\")

यदि आपका ओएस संस्करण विंडोज 7 से अधिक है, तो आप भी टाइप कर सकते हैं
get-childitem \\.\pipe\

यह वस्तुओं की एक सूची देता है। यदि आप केवल नाम चाहते हैं:

(get-childitem \\.\pipe\).FullName


2
आप get-childitem \\। \ पाइप \ का उपयोग कर सकते हैं
क्रिस गिलम

@ क्रिसघिलम मैंने कोशिश की, और एक त्रुटि मिली "पथ पा सकते हैं '\\। \ पाइप \' क्योंकि यह मौजूद नहीं है"
एंड्रयू शेफर्ड

1
@AndrewShepherd दिलचस्प। आप किस ओएस पर चल रहे हैं? यह मेरे लिए विंडोज सर्वर 2012 और विंडोज 10 (क्रमशः PowerShell v3 और v5) पर काम करता है।
क्रिस जिलुम

1
@ क्रिसगिलम लेकिन मैंने अभी इसे अपने विंडोज सरफेस आरटी डिवाइस पर आज़माया है। यह वहां काम करता है। (पॉवरशेल v4)। मैं जवाब में आपकी टिप्पणी शामिल करूंगा।
एंड्रयू शेफर्ड

57

इसके बजाय निम्नलिखित प्रयास करें:

String[] listOfPipes = System.IO.Directory.GetFiles(@"\\.\pipe\");

6
आपकी याद आ रही है। string [] listOfPipes = System.IO.Directory.GetFiles (@ "\\। \ पाइप \");
dmex

मैंने सारी रात एक समारोह की तलाश में या पाइपों की सूची बनाने में लगा दी। मुझे ठीक इसी की आवश्यकता थी। धन्यवाद!!
स्वैक्स

क्या है ये खास रास्ता? \\। एक ड्राइव के लिए कच्चे उपयोग के लिए इस्तेमाल किया जा रहा है, लेकिन यह कहाँ pipeसे आता है?
केविन डोयोन

2
@ केविन "\\। \" का अर्थ है "यह मशीन" msdn.microsoft.com/en-US/en-en/en-library/windows/desktop/… के
यूजीन

5
हमारे पास विंडोज़ 10 पर काम करने वाली इस पद्धति के मुद्दे हैं - त्रुटि "दूसरा पथ टुकड़ा ड्राइव या UNC नाम नहीं होना चाहिए। पैरामीटर नाम: path2"
दाई बोक


19

मैं क्रोम में एक फीचर भर में लड़खड़ा गया, जो "फ़ाइल: //.////ipe.co" पर नेविगेट करके सभी खुले नाम वाले पाइपों को सूचीबद्ध करेगा।

चूंकि मुझे इसका कोई संदर्भ नहीं मिल रहा है और यह मेरे लिए बहुत उपयोगी रहा है, मुझे लगा कि मैं इसे साझा कर सकता हूं।


क्या आप थोड़ा और समझा सकते हैं?
डाइटर मीमकेन 15

यह मेरे पाइपों को सूचीबद्ध करता है। गजब का! (ध्यान दें कि यह काम करेगा क्योंकि यह एक निर्देशिका की तरह काम करता है, जैसा कि एंड्रयू शेफर्ड के जवाब से पता चलता है)
मार्टीन कोल

मुझे लगता है कि यह डिबगिंग / डायग्नोस्टिक्स के लिए है, क्योंकि मैंने देखा कि क्रोम बहुत सारे नामित पाइपों का उपयोग करता है - मुझे 125 "क्रोम" पाइप मिले जब भी क्रोम नहीं चल रहा है!
कोकवला



7

प्रस्तुत करते समय इस वेब साइट द्वारा दूसरे पाइप की व्याख्या की गई थी ... आपको शुरुआत में दो बैकस्लैश चाहिए। तो System.IO.Directory.GetFiles (@ "\\। \ पाइप \") का उपयोग करना सुनिश्चित करें।

ध्यान दें कि मैंने इस फ़ंक्शन कॉल को 'पथ में अवैध वर्ण' कहा है। अपवाद जब मेरी मशीन पर एक पाइप में अमान्य वर्ण थे। PipleList.exe ने ठीक काम किया है, लेकिन ऐसा लगता है कि यह MS के .net कोड के बग जैसा है।


1
'अवैध चरित्रों के बारे में' नोट एक महत्वपूर्ण बिंदु है, क्योंकि प्रोग्राम के लिए पाइप के नामों को खोलना बहुत आम है जो इसे ट्रिगर करते हैं। कोई भी प्रोग्राम जो एक पाइप का नाम खोलता है C:\myLocation\someFile.x, इस त्रुटि का कारण होगा।
dss539
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.