NAME

Proc::PID::File::Fcntl - Manage PID files using fcntl() locks

SYNOPSIS

  use Proc::PID::File::Fcntl;
  my $pidfile = new Proc::PID::File::Fcntl;

DESCRIPTION

This Perl module permits callers to prevent multiple simultaneous instantiations of themselves. The module accomplishes this using a pidfile, which is used to obtain a lock.

Unlike the traditional pidfile locking protocol, which uses the existence and content of the file to indicate the lock, this module uses fcntl() locking of the file. This locking protocol is free of races and, assuming the lock file is not in a networked filesystem, is safe across OS crashes.

METHODS

$pidfile = Proc::PID::File::Fcntl->new(opt => val, ... )

Creates and locks a new pidfile, returning an object holding the lock. When the returned object goes out of scope, the lock is released.

Calls die if the file cannot be opened or is locked by another process.

Must not be called when the calling process already has a lock on the pidfile, otherwise that lock will be released.

The options available include the following:

path

Specifies the path name of the pidfile. Defaults to $0. If the value does not start with / then /var/run/ is prepended. If the value does not end with .pid then .pid is appended.

$pid = Proc::PID::File::Fcntl->getlocker(opt => val, ... )

Returns the PID of the process holding the lock on a pidfile or 0 if there is no such process.

Must not be called when the calling process already has a lock on the pidfile, otherwise that lock will be released.

The options available include the following:

path

Specifies the path name of the pidfile. Defaults to $0. If the value does not start with / then /var/run/ is prepended. If the value does not end with .pid then .pid is appended.

AUTHOR

John Gardiner Myers <jgmyers@proofpoint.com>

SUPPORT

For help and thank you notes, e-mail the author directly. To report a bug, submit a patch, or add to the wishlist please visit the CPAN bug manager at: http://rt.cpan.org

COPYRIGHT

Copyright (C) 2005, 2006 Proofpoint, Inc.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself