Linux::Pid - Get the native PID and the PPID on Linux


Linux-Pid documentation Contained in the Linux-Pid distribution.

Index


Code Index:

NAME

Top

Linux::Pid - Get the native PID and the PPID on Linux

SYNOPSIS

Top

    use Linux::Pid;
    print Linux::Pid::getpid(), "\t", Linux::Pid::getppid(), "\n";

    use Linux::Pid qw(getpid getppid);
    print getpid(), "\t", getppid(), "\n";

DESCRIPTION

Top

Why should one use a module to get the PID and the PPID of a process where there are the $$ variable and the getppid() builtin ? (Not mentioning the equivalent POSIX::getpid() and POSIX::getppid() functions.)

In fact, this is useful on Linux, with multithreaded programs. Linux' C library, using the linux thread model, returns different values of the PID and the PPID from different threads. (Other thread models such as NPTL don't have the same behaviour). This module forces perl to call the underlying C functions getpid() and getppid().

AUTHOR

Top

Copyright (c) 2002-2007 Rafael Garcia-Suarez. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Linux-Pid documentation Contained in the Linux-Pid distribution.

package Linux::Pid;

use strict;
use warnings;

our $VERSION = 0.04;
require XSLoader;
XSLoader::load('Linux::Pid', $VERSION);

sub import {
    shift;
    my $p = caller;
    for my $symbol (@_) {
	if ($symbol eq 'getpid' or $symbol eq 'getppid') {
	    no strict 'refs';
	    *{$p."::".$symbol} = \&{$symbol};
	} else {
	    require Carp;
	    Carp::croak("Unrecognized symbol $symbol");
	}
    }
}

1;

__END__