NAME
Proc::tored::PidFile - Manage a service using a pid file
VERSION
version 0.20
SYNOPSIS
use
Proc::tored::PidFile;
my
$pidfile
= Proc::tored::PidFile->new(
file_path
=>
$pid_file_path
);
if
(
my
$lock
=
$pidfile
->
lock
) {
run_service;
}
else
{
die
"service is already running under process id "
.
$pidfile
->running_pid;
}
DESCRIPTION
Allows the use of a pid file to manage a running service.
METHODS
is_running
Returns true if the pid indicated by the pid file is the current process.
running_pid
Returns true if the pid indicated by the pid file is an active, running process. This is determined by attempting to signal the process using kill(0, $pid)
.
read_file
Returns the pid stored in the pid file or 0 if the pid file does not exist or is empty.
write_file
Writes the current process id to the pid file. Returns true on success, false if the pid file exists and contains a running process id or if unable to atomically write the pid file out.
clear_file
Truncates the pid file and then unlinks it.
lock
Attempts to write the current process id to the pid file and returns a Guard that will truncate and unlink the pid file if it goes out of scope.
{
my
$lock
=
$pidfile
->
lock
;
run_service;
}
# $lock goes out of scope and pid file is truncated and unlinked
AUTHOR
Jeff Ober <sysread@fastmail.fm>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Jeff Ober.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.