2012-06-15 12 views
11

यह मुझे कई दिनों से परेशान कर रहा है। मैं एनयूएल डिवाइस के मानक स्ट्रीम पुनर्निर्देशन के बारे में जानता हूं, लेकिन ऐसा नहीं है। node.js अपने fs देशी/libuv बाइंडिंग के तहत CreateFileW का उपयोग करता है।मैं node.js से विंडोज के तहत एनयूएल डिवाइस को कैसे लिख सकता हूं?

दुर्भाग्य की तरह कुछ का उपयोग कर:

require('fs').writeFileSync('NUL', 'foo') 

CWD 3 बाइट्स है कि में एक NUL फ़ाइल बनाता है।

मैंने \ Device \ Null पर लिखने की कोशिश की, लेकिन चूंकि मैं बहुत अधिक * निक्स हेड हूं जहां सब कुछ एक फ़ाइल है, मैं वास्तव में \ Device \ Null के लिए एक कार्य पथ खोजने में विफल रहा। जैसे \\। \ Device \ Null जो ENOENT फेंकता है।

विंडोज के तहत यह काम कैसे करें इस बारे में कोई विचार?

This संबंधित प्रतीत होता है, लेकिन मैं lib/fs.js से uv/src/win/fs.c से पूरे प्रवाह को ट्रैक नहीं कर सकता ताकि यह जांच सके कि पथ तर्क किसी प्रकार के रिश्तेदार से पीड़ित नहीं है पूर्ण पथ संकल्प।

+1

ध्यान दें कि यह काम करेगा, लेकिन 'NUL:' आज़माएं। –

+0

प्रश्न पोस्ट करने से पहले इसे आजमाया। काम नहीं करता। कुछ प्रकार की पहुंच से इंकार कर दिया त्रुटि से इंकार कर दिया। इस समय एक विंडोज मशीन नहीं है जो विशिष्टताओं को प्रदान करने के लिए है। – SaltwaterC

उत्तर

5

मान्य पथ NUL डिवाइस के लिए "\\\\.\\NUL", नहीं NUL है, वैसे-वैसे उपयोग है: fs.writeFileSync("\\\\.\\NUL", "foo")। यह समस्या GitHub पर Node.js के खिलाफ उठाया गया था: - इस शुरुआत में \\.\ डाल (अन्य स्लैश बचने के लिए कर रहे हैं) की आवश्यकता है https://github.com/nodejs/node-v0.x-archive/issues/9271

NUL के बाद से एक डिवाइस, नहीं एक फाइल है, यह के माध्यम से डिवाइस नाम स्थान तक पहुँचा हो गया है - https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247.aspx#Win32_Device_Namespaces देखें।

एनपीएम पर एक साधारण dev-null लाइब्रेरी भी है जिसका उपयोग धाराओं के साथ किया जा सकता है: https://www.npmjs.com/package/dev-null (हालांकि .writeFile के साथ नहीं)।

3

एक लंबा कामकाज है, जैसे कोड स्वयं। लेकिन आप यहां https://github.com/hanshuebner/node-hid/blob/master/src/HID.cc से एक विचार ले सकते हैं और सी लाइब्रेरी पर एक रैपर लिख सकते हैं।

+0

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

+0

मुझे खुशी है कि आपको एक समाधान समाधान मिला है। क्या आप अपना कोड समुदाय के साथ साझा कर सकते हैं? :) –

+0

यह [http-get] का हिस्सा है (https://github.com/SaltwaterC/http-get)। – SaltwaterC

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