मैं सोच रहा था कि फ़ाइल को अपडेट करने का इंतजार करने का कोई तरीका है या नहीं, और उसके बाद अपडेट होने के बाद इसे पढ़ें। तो अगर मेरे पास file.txt
है, तो मैं प्रतीक्षा करना चाहता हूं जब तक कि कुछ नया लिखा न जाए, और फिर इसे पढ़ें/इसे संसाधित करें/आदि। वर्तमान में मैं Time::HiRes::sleep(.01)
का उपयोग कर मतदान कर रहा हूं, लेकिन मुझे आश्चर्य है कि क्या कोई बेहतर तरीका है। धन्यवाद।फ़ाइल अपडेट होने तक प्रतीक्षा करने का एक अच्छा तरीका क्या है और फिर पर्ल में इसे पढ़ा जाता है?
5
A
उत्तर
9
हां एक बेहतर तरीका है। विंडोज़ पर आप लिनक्स पर FileSystemWatcher इंटरफ़ेस का उपयोग कर सकते हैं, inotify का उपयोग करें।
विंडोज
use Win32::FileSystem::Watcher;
my $watcher = Win32::FileSystem::Watcher->new("c:\\");
# or
my $watcher = Win32::FileSystem::Watcher->new(
"c:\\",
notify_filter => FILE_NOTIFY_ALL,
watch_sub_tree => 1,
);
$watcher->start();
print "Monitoring started.";
sleep(5);
# Get a list of changes since start().
my @entries = $watcher->get_results();
# Get a list of changes since the last get_results()
@entries = $watcher->get_results();
# ... repeat as needed ...
$watcher->stop(); # or undef $watcher
foreach my $entry (@entries) {
print $entry->action_name . " " . $entry->file_name . "\n";
}
# Restart monitoring
# $watcher->start();
# ...
# $watcher->stop();
लिनक्स
use Linux::Inotify2;
my $inotify = new Linux::Inotify2();
foreach (@ARGV)
{
$inotify->watch($_, IN_ALL_EVENTS);
}
while (1)
{
# By default this will block until something is read
my @events = $inotify->read();
if (scalar(@events)==0)
{
print "read error: $!";
last;
}
foreach (@events)
{
printf "File: %s; Mask: %d\n", $_->fullname, $_->mask;
}
}
2
File::Tail फ़ाइल मतदान होगा, लेकिन अपने दृष्टिकोण के ऊपर कुछ लाभ हैं:
- चुनाव समय पुनः गणना की है गतिशील रूप से संख्या के आधार पर अंतिम मतदान
- यदि फ़ाइल अपरिवर्तित बनी हुई है, तो मतदान सीपीयू
- फ़ाइल :: टेल का पता लगाएगा कि फ़ाइल काटा गया है, स्थानांतरित किया गया है और/या फिर से बनाया गया है, और चुपचाप पुनः- आपके लिए फ़ाइल खोलें
- यह एक नियमित फ़ाइल हैंडल बांध सकता है जिसे आप बिना किसी विशेष एपीआई या वाक्यविन्यास के सामान्य उपयोग कर सकते हैं। perldoc से
उदाहरण:
use File::Tail;
my $ref=tie *FH,"File::Tail",(name=>$name);
while (<FH>) {
print "$_";
}
संबंधित मुद्दे
- 1. पर्ल में एक क्रॉस-प्लेटफार्म, परमाणु फ़ाइल प्रतिस्थापन करने का सबसे अच्छा तरीका क्या है?
- 2. वसंत में इसे फिर से करने का सबसे अच्छा तरीका?
- 3. एक शर्त होने तक प्रतीक्षा थ्रेड
- 4. पर्ल में फ़ाइल खोलने और पढ़ने का सबसे अच्छा तरीका क्या है?
- 5. पर्ल में Excel फ़ाइल को पार्स करने का सबसे अच्छा तरीका क्या है?
- 6. फ़ाइल बंद होने तक प्रतीक्षा कैसे करें
- 7. फ़ाइल का आकार पाने का एक अच्छा तरीका क्या है?
- 8. टेबल को लॉक किए बिना उपयोग में होने पर तालिका में डेटा अपडेट करने का सबसे अच्छा तरीका क्या है?
- 9. पर्ल में एक पाइप से कैसे पढ़ा और लिखना है?
- 10. एक निर्भर बनावट क्या पढ़ा जाता है?
- 11. ट्विस्ट + स्क्लाक्लेमी और इसे करने का सबसे अच्छा तरीका
- 12. पर्ल मॉड्यूल में अनंतता की जांच करने का सबसे अच्छा तरीका क्या है?
- 13. वीआईएम टर्मिनल पर कैसे प्रदर्शित करता है और फिर इसे वापस ले जाता है?
- 14. पर्ल में तिथियों की तुलना करने का सबसे अच्छा तरीका क्या है?
- 15. सत्र अलग होने पर NHibernate में केवल बदले गए गुणों को अपडेट करने का सबसे अच्छा तरीका क्या है?
- 16. पर्ल सीजीआई आवेदन लिखने का सबसे अच्छा तरीका क्या है?
- 17. पर्ल में एक सरणी को घुमाने का सबसे अच्छा तरीका क्या है?
- 18. WebBrowser.Print() पूर्ण होने तक प्रतीक्षा करें। .NET
- 19. सूची में कौन सा पूर्णांक गुम होने की गणना करने का सबसे अच्छा तरीका क्या है?
- 20. एक अच्छा पर्ल कोड नेविगेटर क्या है?
- 21. क्या पर्ल में यादृच्छिक फ़ाइल उत्पन्न करने का कोई और अधिक प्रभावी तरीका है?
- 22. क्या एसवीएन बाहरी अपडेट होने पर निर्माण को ट्रिगर करने का कोई तरीका है?
- 23. पर्ल मॉड्यूल में डेटाबेस को तैनात करने का अच्छा तरीका?
- 24. पर्ल एप्लिकेशन को तैनात करने का एक अच्छा तरीका क्या है?
- 25. क्या ऐप अपडेट होने पर NSUserDefaults मिटा दिया जाता है?
- 26. पावरशेल के साथ एक एप्लिकेशन चलाएं और इसे समाप्त होने तक प्रतीक्षा करें
- 27. यह सुनिश्चित करने का सबसे अच्छा तरीका क्या है कि पर्ल प्रोग्राम का केवल एक उदाहरण चल रहा है?
- 28. क्या मैक्स का उपयोग एक अच्छा प्रोग्रामिंग अभ्यास है या इसे करने का एक अलग तरीका है?
- 29. 3.6 से 4.0 तक सोलर माइग्रेट करना, इसे करने का तरीका, और क्या यह सुरक्षित है?
- 30. रूबी में एक टैब-सीमांकित फ़ाइल का विश्लेषण करने का सबसे अच्छा तरीका क्या है?
http://search.cpan.org/perldoc?SGI::FAM और http://search.cpan.org/perldoc?Sys::Gamin फाइल सिस्टम और यूनिक्स पर काम कर सकते हैं जहां inotify नहीं करता है। – ephemient