http://www.perlmonks.org?node_id=998850

anshumangoyal has asked for the wisdom of the Perl Monks concerning the following question:

I am using active perl (v5.12.4) in windows. There is a program which forks a number of processes as child processes. at the end of program i want to get all PID's of these processes and kill them to complete the program. Is there any windows tool/command or a package which can help me get info about all the processes which have been forked? Heard about Proc-ProcessTable but this only works in unix and not in windows. Even i am unable to install it using 'ppm install Proc-ProcessTable'

Replies are listed 'Best First'.
Re: Proc-ProcessTable alternative
by Anonymous Monk on Oct 13, 2012 at 14:28 UTC
Re: Proc-ProcessTable alternative
by pokki (Monk) on Oct 13, 2012 at 23:45 UTC

    Uh.

    You're forking with fork(), I assume? So you're probably using the standard forking idiom

    if (my $pid = fork()) { # do stuff in the parent } else { # do stuff in the child }

    or a variant thereof.

    The return value of fork() is, according to the perldoc, undef if the fork failed, 0 if the fork succeeded and you're in the child process, or the child's PID if the fork succeeded and you're in the parent process. So the parent process gets the forked process' PID as fork()'s return value. You can collect these every time you fork and manage your child processes however you want.