Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- use File::Monitor;
- use File::Basename;
- use Time::HiRes qw {usleep};
- my $pid,@pids;
- sub textfile_notifier {
- my ($watch_name, $event, $change) = @_;
- my @new_file_paths = $change->files_created; #The change object has a property called files_created,
- #which contains the names of any new files
- for my $path (@new_file_paths) {
- my ($base, $fname, $ext) = fileparse($path, '.log'); # $ext is "" if the '.txt' extension is
- # not found, otherwise it's '.txt'.
- if ($ext eq '.log') {
- print "$path was createdn";
- #-----------------------------------------Forking part #-----------------------------------------
- defined ($pid = fork()) or die "Couldn't fork: $!";
- if ($pid == 0) { #then in child process
- print "Loop got executedn";
- }
- else { #then in parent process, where $pid is the pid of the child
- push @pids, $pid;
- }
- #-----------------------------------------Forking part ends here #-----------------------------------------
- }
- }
- }
- my $monitor = File::Monitor->new();
- $monitor->watch( {
- name => '/home/goudarsh/Desktop/logs/',
- recurse => 1,
- callback => {files_created => &textfile_notifier}, #event => handler 1
- } );
- $monitor->scan;
- while (1) {
- $monitor->scan; #Scanning the directory one
- #sleep(2);
- #usleep(10_000); #$microseconds = 750_000;
- for my $pid (@pids) {
- waitpid($pid, 0) #0 => block
- }
- }
- touch 1.log
- touch 2.log
- touch 3.log
- touch 4.log
- /home/goudarsh/Desktop/logs/1.log was created
- /home/goudarsh/Desktop/logs/2.log was created
- /home/goudarsh/Desktop/logs/2.log was created
- /home/goudarsh/Desktop/logs/3.log was created
- /home/goudarsh/Desktop/logs/3.log was created
- /home/goudarsh/Desktop/logs/3.log was created
- /home/goudarsh/Desktop/logs/4.log was created
- /home/goudarsh/Desktop/logs/3.log was created
- /home/goudarsh/Desktop/logs/4.log was created
- /home/goudarsh/Desktop/logs/4.log was created
- /home/goudarsh/Desktop/logs/4.log was created
- /home/goudarsh/Desktop/logs/4.log was created
- /home/goudarsh/Desktop/logs/4.log was created
- /home/goudarsh/Desktop/logs/4.log was created
- /home/goudarsh/Desktop/logs/4.log was created
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement