The number of seconds elapsed in the current minute given by date
is a 2-digit number. That means seconds 0 to 9 have a leading 0,
which causes them to be interpreted as octal numbers. This is not
intended, but doesn't actually break things (because 00 to 07 octal
are equivalent to 0 to 7 decimal) until second 8 or 9, at which point
we get an error because 08 and 09 are invalid octal numbers.
Write the requests to all named pipes if the mod list begins with
'>>* '. This feature will probably not be merged into the main branch
because we have to search for the fifo files before each send, and if
the daemon for this login session exits, the scheduler will continue
running, which may not be desirable.
Use rpid in the daemon and the scheduler to append the PID of their
common login process to the named pipe so daemons and schedulers in
other sessions won't conflict with one another.
It looks like if the daemon is started in the .xinitrc, its PID
can change once the X session is fully started. This will cause
long-running schedulers that were started along with the daemon
to not find it and exit soon after the session is started. So have
the schedulers check for the newest daemon instance each time they
are about to send it a signal. This is probably more efficient than
before when we were getting the PID once when the scheduler starts,
because the scheduler would validate that the PID still referred to
a daemon each time it sent a signal. Getting the PID replaces that
validation check, and may actually be faster.