| [reply] |
So, to clarify, you want a long running program to start running at 7pm, and put itself to sleep at 7am.
I would look at the sleep and localtime functions. Pay particular attention to the return value of the sleep function.
| [reply] |
You could use an event loop, like this Glib example..... the trick is to return 0 or 1 to keep the timer going or to stop it. You could get very creative , depending on what code you need to run..... just fork and exec your code off, and let the timer do the checking for 7 to 7 in time.
#!/usr/bin/perl
use warnings;
use strict;
use Glib;
my $main_loop = Glib::MainLoop->new;
my $count = 1;
my $timer = Glib::Timeout->add (1000, \&timer_callback, undef, 1 );
#1000 milliseconds = 1 second
sub timer_callback{
$count++;
# are we between 7 and 7?.... if so....(code left up to you)
print "$count\n";
return 1; #return 1 to keep going, return 0 to stop timer
}
my $count1 = 1;
my $timer1 = Glib::Timeout->add (100, \&timer1_callback, undef, 1 );
sub timer1_callback{
$count1++;
print "\t$count1\n";
return 1;
}
### filehandle watch
#open (FH, "+> test.log") or warn "$!\n";
#Glib::IO->add_watch (fileno 'FH', ['in'], \&watch_callback, 'FH', 1 )
+;
$main_loop->run;
| [reply] [d/l] |
What's a program function? What kind of program are we talking about - is it running all the time, started on demand, ... ? Should the "program function" abort if the clock passes 7AM and it's still running? Or perhaps it should wait till 7PM? Why aren't you just checking the current time? | [reply] |
No it shouldn't abort because I want it to continue again when the time slot starts the next day.
| [reply] |
Could you be a bit more elaborate on what it is what you want?
| [reply] |