Run an IO action protected by a pidfile.
withPidFile path act
creates a pidfile at the specified path
containing the Process ID of the current process. Then act is run,
the pidfile is removed and the result of act returned wrapped in a
Just.
If the pidfile already exists, act is not run, and Nothing is returned.
Any other error while creating the pidfile results in an error.
If an exception is raised in act, the pidfile is removed before
the exception is propagated.
The pidfile is created with O_CREAT and O_EXCL flags to ensure that
an already existing pidfile is never accidentally overwitten.