Bug #17538: proc_close() doesn't return exit value of process
| From: | kims at contrail dot com dot au | Date: | Fri, 31 May 2002 01:19:15 +0000 |
| Subject: | Bug #17538: proc_close() doesn't return exit value of process | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-8970@lists.php.net to get a copy of this message | ||
From: kims@contrail.com.au
Operating system: Debian GNU/Linux
PHP version: 4.0CVS-2002-05-30
PHP Bug Type: Filesystem function related
Bug description: proc_close() doesn't return exit value of process
proc_close() seems to always return -1, instead of the exit value of the
process it closed. I feel that this a bug in proc_close().
If proc_close() is returning -1 because of some sort of error or problem,
then the online manual (http://www.php.net/proc_close) needs to specify
what conditions make proc_close return -1.
Here's a script that reproduces the problem.
Thanks :)
<?
/* costants to use with the $pipes array */
define(BASH_STDIN, 0);
define(BASH_STDOUT, 1);
/* a random exit code, just to keep things interesting */
$bashexit = rand(100, 199);
/* a shell script to write to bash's STDIN */
$shellscript .=
"
echo I am bash, and I will return an exit code of $bashexit
exit $bashexit
";
/* run bash, with pipes to/from stdin and stdout */
$bash = proc_open(
"bash",
array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "/tmp/bashstderr", "a")
),
$pipes
);
/* write the prepared shell script to bash's STDIN */
fwrite($pipes[BASH_STDIN], $shellscript);
/* close pipe to bash's STDIN */
fclose($pipes[BASH_STDIN]);
echo "bash's stdout:\n";
/* read and echo output from bash, one byte at a time */
while(!feof($pipes[BASH_STDOUT]))
echo fread($pipes[BASH_STDOUT], 1);
/* close pipe from bash's STDOUT */
fclose($pipes[BASH_STDOUT]);
echo "\n";
$realexit = proc_close($bash);
echo "bash's exit code: $realexit\n\n";
if ($realexit != $bashexit)
echo "process exit code was $bashexit proc_close() returned
$realexit!\n";
?>
--
Edit bug report at http://bugs.php.net/?id=17538&edit=1
--
Fixed in CVS: http://bugs.php.net/fix.php?id=17538&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=17538&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=17538&r=needtrace
Try newer version: http://bugs.php.net/fix.php?id=17538&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=17538&r=support
Expected behavior: http://bugs.php.net/fix.php?id=17538&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=17538&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=17538&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=17538&r=globals