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.