पर पर्ल में फ़ाइल का उपयोग किया जा रहा है या नहीं, मैं कुछ पर्ल लिख रहा हूं जो विंडोज मीडिया सेंटर पर दर्ज टीवी शो लेता है और कुछ मानदंडों के आधार पर उन्हें स्थानांतरित/नाम/हटा देता है।यह निर्धारित करें कि विंडोज
चूंकि पर्ल काफी बार चलता है, इसलिए मैं साफ-सफाई करना चाहता हूं कि फ़ाइल उपयोग में है या नहीं (दूसरे शब्दों में, शो रिकॉर्ड होने की प्रक्रिया में है) इसलिए मैं इसके साथ कुछ भी करने से बच सकता हूं।
मेरे वर्तमान विधि फ़ाइल की स्थिति पर लग रहा है ("स्टेट" का प्रयोग करके) और 5 सेकंड के बाद इसे फिर से तुलना, इसलिए जैसे:
sub file_in_use
{
my $file = shift;
my @before = stat($file);
sleep 5;
my @after = stat($file);
return 0 if ($before ~~ $after);
return 1;
}
यह काम करने के लिए लगता है, लेकिन मैं सचेत कर रहा हूँ कि वहाँ ऐसा करने के लिए शायद एक बेहतर और साफ तरीका है।
क्या आप सलाह दे सकते हैं?
यह यह करने के लिए एक ठीक approch है और साथ में विफल रहता है मैं विश्वास नहीं करता कि आपको चारों ओर कई विकल्प मिलेंगे ... ऐसा करने का एक और तरीका एप्लिकेशन पिड पढ़कर और फ़ाइलों को एक बार बंद कर दिया जाएगा ... – Prix
प्रिक्स से (मुझे लगता है कि यह इंगित करना महत्वपूर्ण है आउट): * यदि फ़ाइल का पूर्ण समय उपयोग किया जा रहा है और जारी नहीं किया गया है तो आप फ़ाइल पर एक चाल [या हटाएं] नहीं कर सकते क्योंकि यह एक त्रुटि उत्पन्न करेगा ... *। (एक प्रति विभिन्न फ़ाइल मोड सेटिंग्स के आधार पर काम कर सकती है।) यहां तक कि स्टेट दृष्टिकोण के साथ, आपको * अभी भी * एफएस परिदृश्य को संभालना होगा और 'file_in_use' को केवल' संकेत 'के रूप में उपयोग करना होगा (हालांकि संभावित दौड़ की स्थिति कभी भी भौतिक नहीं हो सकती है यहाँ)। –
@pst True, यही कारण है कि मुझे लगता है कि चाल चलने का एक अच्छा तरीका है ... चूंकि फ़ाइल अभी भी लॉक है, तो यह या तो 0 लौटाएगी या आपको यह बताएगी कि आप इसे कैसे कोड करते हैं और आप केवल तब तक प्रयास कर सकते हैं जब तक आप इसे जारी नहीं रख सकते यह जारी किया गया है या तो ... – Prix