sleepenh(1)
an enhanced sleep program
Description
SLEEPENH
NAME
sleepenh - an enhanced sleep program
SYNOPSIS
sleepenh [[--warp|-w] INITIALTIME] TIMETOSLEEP
DESCRIPTION
sleepenh
is a program that can be used when there is a need to
execute some functions periodically in a shell script. It
was not designed to be accurate for a single sleep, but to
be accurate in a sequence of consecutive sleeps.
After a successful execution, it returns to stdout the
timestamp it finished running, that can be used as
INITIALTIME to a successive execution of
sleepenh.
OPTIONS
-h, --help
display this help and exit
-w, --warp
warp resulting timestamp, when there is no need to sleep. An immediately following call of sleepenh with the resulting TIMESTAMP would most probably result in a real sleep.
-V, --version
output version information and exit
ARGUMENTS
TIMETOSLEEP
is a real number in seconds, with microseconds resolution (1
minute, 20 seconds and 123456 microseconds would be
80.123456).
INITIALTIME is a real number in seconds, with
microseconds resolution. This number is system dependent. In
GNU/Linux systems, it is the number of seconds since
midnight 1970-01-01 GMT. Do not try to get a good value of
INITIALTIME. Use the value supplied by a previous
execution of sleepenh.
If you don’t specify INITIALTIME, it is assumed
the current time.
EXIT STATUS
An exit status greater or equal to 10 means failure. Known exit status:
|
0 |
Success. | ||
|
1 |
Success. There was no need to sleep. (means that INITIALTIME + TIMETOSLEEP was greater than current time). | ||
|
10 |
Failure. Missing command line arguments. | ||
|
11 |
Failure. Did not receive SIGALRM. | ||
|
12 |
Failure. Argument is not a number. | ||
|
13 |
Failure. System error, could not get current time. |
USAGE EXAMPLE
Suppose you need to send the char ’A’ to the serial port ttyS0 every 4 seconds. This will do that:
#!/bin/sh
TIMESTAMP=$(sleepenh 0)
while true; do
# send the byte to ttyS0
echo -n "A" > /dev/ttyS0;
# just print a
nice message on screen
echo -n "I sent ’A’ to ttyS0, time now is
";
sleepenh 0;
# wait the
required time
TIMESTAMP=$(sleepenh $TIMESTAMP 4.0);
done
HINT
This program can
be used to get the current time. Just execute:
sleepenh 0
BUGS
It is not accurate for a single sleep. Short TIMETOSLEEPs will also not be accurate.
SEE ALSO
date(1), sleep(1).
AUTHOR
This manual page was written by Pedro Zorzenon Neto.