Alternatively, if you're calling a subsequent php script using proc_open, you can have that process echo its own actual PID in the output.
Also, if you go through the /proc filesystem on linux, you can read through /proc/12345 where 12345 is the pid returned by proc_get_status (the pid of the /bin/sh instance) and it will list its child processes within.
Description
array proc_get_status
( resource $process
)
proc_get_status() fetches data about a process opened using proc_open().
Return Values
An array of collected information on success, and FALSE on failure. The returned array contains the following elements:
| element | type | description |
|---|---|---|
| command | string | The command string that was passed to proc_open(). |
| pid | int | process id |
| running | bool | TRUE if the process is still running, FALSE if it has terminated. |
| signaled | bool | TRUE if the child process has been terminated by an uncaught signal. Always set to FALSE on Windows. |
| stopped | bool | TRUE if the child process has been stopped by a signal. Always set to FALSE on Windows. |
| exitcode | int | The exit code returned by the process (which is only meaningful if running is FALSE). Only first call of this function return real value, next calls return -1. |
| termsig | int | The number of the signal that caused the child process to terminate its execution (only meaningful if signaled is TRUE). |
| stopsig | int | The number of the signal that caused the child process to stop its execution (only meaningful if stopped is TRUE). |
proc_get_status
damien at cyg dot net
13-Jun-2007 06:06
13-Jun-2007 06:06
andy dot shellam at mailnetwork dot co dot uk
05-Apr-2007 05:16
05-Apr-2007 05:16
Further to my previous note, I've found out the PID returned is the PID of the shell (/bin/sh) that then runs the actual command requested.
I've raised this as bug #41003.
andy dot shellam at mailnetwork dot co dot uk
05-Apr-2007 04:58
05-Apr-2007 04:58
To the poster above, same here on FreeBSD 6.1, PHP 5.2.1.
To get the correct PID to use for posix_kill I have to add 1 to the PID returned from proc_get_status.
