2015-07-01 6 views
7

क्या गैर-साझाकरण अनन्य रीड-राइट एक्सेस के साथ फ़ाइल खोलने का कोई तरीका है?जांचें कि कोई फ़ाइल किसी अन्य प्रक्रिया में खुलती है

fs.watch से एक फ़ाइल परिवर्तन घटना का मतलब यह नहीं है कि फ़ाइल पूरी तरह से लिखी गई है, अधिकांश नोड आधारित प्रक्रियाओं के मामले में अधिक भाग स्ट्रीम के नीचे आ रहे हैं, या यह अभी तक फ्लश नहीं हो सकता है।

fs.open एक फ़ाइल जो पहले से खुला है और खोले जाने के लिए स्ट्रीम किया जा रहा है, बिना त्रुटि के लिखने मोड में। कोई टाइमआउट देरी पेश कर सकता है लेकिन यह बहुत ही भंगुर और मनमाना है।

खिड़कियों पर, एक सी से FILE_SHARE_NONE साथ CreateFile ऐसा करने में सक्षम हो सकता है, काफी याद नहीं कर सकते क्या बराबर लिनक्स पर है (अगर मैं सही ढंग से याद के रूप में ताले सलाहकार हैं), अगर ओएस एक्स एक है पता नहीं है समकक्ष, posix या अन्यथा)।

उत्तर

1

fs-ext पैकेज में फ़ंक्शन देखें।

+0

यह ओएसएक्स के लिए ठीक काम करता है, लेकिन विंडोज़ में नोड 6 के साथ संगत नहीं है। https://github.com/baudehlo/node-fs-ext/issues/57 –

3

आप किसी अन्य प्रक्रिया में फ़ाइल खोलने के लिए @ronomon/opened का उपयोग कर सकते हैं, यदि किसी भी एप्लिकेशन के पास फ़ाइल में खुले हैंडल हैं या फाइल डिस्क्रिप्टर हैं।

यह आपको नहीं बताएगा कि कौन से अनुप्रयोगों में फ़ाइल खुलती है, केवल यह कि फाइल अन्य अनुप्रयोगों में खुली है।

यह विंडोज, मैकोज़ और लिनक्स पर काम करता है और केवल लिनक्स पर विशेषाधिकारों की आवश्यकता है।

यह खुले हैंडल के साथ अन्य प्रक्रियाओं के कारण किसी भी साझाकरण उल्लंघन का पता लगाने के लिए फ़ाइल को अनन्य साझाकरण मोड के साथ खोलने के लिए विंडोज पर मूल बाध्यकारी का उपयोग करता है।

मैकोज़ और लिनक्स पर यह lsof लपेटता है।

एक विकल्प का उपयोग कर की तुलना में इस तरह के रूप flock, जहाँ तक मैं समझता हूँ, flock केवल सलाहकार है, इसलिए यह केवल सभी प्रक्रियाओं ताला, जो ऐसा नहीं है की जाँच करने के सहयोग करता है, तो काम करेंगे समय अगर प्रक्रियाओं के सबसे स्वतंत्र हैं

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