NAME

Proc::Info::Environment - Read Environment Variables of any Process

SYNOPSIS

use Proc::Info::Environment;
my $proc_info = Proc::Info::Environment->new();

my $env = $proc_info->env( $pid );

print "\$PATH of process $pid is $env->{PATH}\n";

DESCRIPTION

Proc::Info::Environment retrieves the settings of environment variables in arbitrary running processes of the operating system.

For example,

use Proc::Info::Environment;
my $proc_env = Proc::Info::Environment->new();
my $env = $proc_env->env( 123 );

will retrieve the environment settings of the process with the pid 123 and (if this process exists and is readable by the user) return them as a hash reference in $env.

As an illustrative (but not very useful) example, retrieving

my $env = $proc_env->env( $$ );

will return a reference to a hash similar to %ENV, which contains the environment variables of the current process.

Reading other processes' environment variables is only possible if the operating system (a) supports a method to do this and (b) the user of the currently running process is either root, or has the same uid as the process whose variables it wants to read.

Proc::Info::Environment is currently supported only for specific Unix systems. On Linux, it will use the procfs file system mounted under /proc to get the information needed. It will read the file /proc/xxx/environ, where xxx is the pid of the target process.

To verify if Proc::Info::Environment supports your operating system, run Proc::Info::Environment::os_supported(), which returns a true value if it is supported. If the OS is unsupported, the new() constructor will die() with an error message listing all currently supported operating systems.

The module's architecture allows for easy support of other systems, if you want support for one and know how the information is provided, drop me an email.

LEGALESE

Copyright 2010 by Mike Schilli, all rights reserved. This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

2010, Mike Schilli <cpan@perlmeister.com>