2011-09-12 9 views
10

मेरे पास पाइथन कोड एक सी ++ लाइब्रेरी से बात कर रहा है जो केवल फाइलनाम लेता है। मैं इसे stdin से पढ़ना चाहता हूँ। यूनिक्स मशीनों पर मैं "/ dev/stdin" का उपयोग कर सकता हूं। मैंने सोचा कि मैं विंडोज पर विशेष "कॉन" डिवाइस का उपयोग कर सकता हूं, लेकिन यह "devo something | my_program" में काम नहीं करता है/dev/tty की तरह है।विंडोज़ "/ dev/stdin" के बराबर है?

विंडोज के तहत सहायक पाइप आवश्यक नहीं है, लेकिन अब मैं उत्सुक हूं। क्या उस ओएस के लिए फ़ाइल नाम "/ dev/stdin" जैसा कुछ है?

+4

यह विंडोज पर $ CONIN है। –

+5

@ हंसपैसेंट बिल्कुल नहीं। 'इको परीक्षण | CON 'या' echo test टाइप करें कंसिन $ '* टाइप करें कंसोल से पढ़ा जाएगा, stdin * से नहीं। वेरास समकक्ष 'गूंज परीक्षण | * nix पर cat/dev/stdin' काम करेगा, यद्यपि यह कमांड वाक्यांश के लिए एक अजीब और पिछड़ा तरीका है। –

+0

संबंधित: [क्या आप पाइथन में एमएस विंडोज़ पर एक फाइल के रूप में stdin खोल सकते हैं?] (Http://stackoverflow.com/questions/8959601/can-you-open-stdin-as-a-file-on-ms- विन्डोज़ -इन-पायथन) –

उत्तर

2

मेरे सर्वोत्तम ज्ञान के लिए/dev/stdin के बराबर नहीं है। हालांकि, यदि आपको वास्तव में आवश्यकता है तो आप अपना नामित पाइप (CreateNamedPipe) बना सकते हैं और नाम को पाइप में इनपुट से फ़ीड करने के लिए एक अलग थ्रेड का उपयोग करके सी ++ लाइब्रेरी में नाम पास कर सकते हैं।

1

मैं आपके प्रश्न का गलत व्याख्या कर सकता हूं - आप सीन और स्टडीन के बारे में जानते हैं, है ना? यदि आपको रीडफाइल या जो भी हो, के लिए वास्तविक लाइव winapi हैंडल की आवश्यकता है, तो GetStdHandle (STD_INPUT_HANDLE)

+1

अंतर्निहित सी ++ कोड में "खुली फ़ाइल" फ़ंक्शन फ़ाइल नाम या स्ट्रीम लेता है, लेकिन इसकी पायथन बाइंडिंग स्ट्रीम का समर्थन नहीं करती है इंटरफेस। मैं इसे केवल एक स्ट्रिंग फ़ाइल नाम पास कर सकता हूं, न कि सिने या फ़ाइल हैंडल। इसके बजाय, मैं इसे "/ dev/stdin" जैसे कुछ के साथ नकली बनाना चाहता हूं। –

2

विंडोज़ पर समकक्ष छद्म फाइल conIN$ और conOUT$ हैं।

+0

वे बराबर नहीं हैं। सवाल यह कहता है कि क्यों (वे '/ dev/tty' की तरह अधिक कार्य करते हैं) और क्रियाग रिंगर की टिप्पणी एक उदाहरण के साथ फैली हुई है। – 31eee384

संबंधित मुद्दे