Re: proc_open, proc_get_status, proc_close

Arne Vajhøj <[email protected]> Fri, 6 Jan 2023 09:07:46 -0500
Newsgroups comp.lang.php
Organization Aioe.org NNTP Server
Message-ID <[email protected]>
On 1/6/2023 5:29 AM, Badarbo wrote:
> with the code below, $rv is 0 :-)
> 
> --- begin code ---
> $pdesc=[0=>['pipe','r'],1=>['file','stdout.log','w'],2=>['file','stderr.log','w']];
> $proc=proc_open('sleep 3',$pdesc,$pipes);
> fclose($pipes[0]);
> $rv=proc_close($proc);
> echo('rv: '.$rv.PHP_EOL);
> exit(0);
> --- end code ---
> 
> With the code below, $rv is -1 :-(
> 
> --- begin code ---
> $pdesc=[0=>['pipe','r'],1=>['file','stdout.log','w'],2=>['file',stderr.log','w']];
> $proc=proc_open('sleep 3',$pdesc,$pipes);
> $done=false;
> while ($done===false) {
> 	$pstat=proc_get_status($proc);
> 	if (!$pstat['running']) $done=true;
> 	usleep(500000);
> }
> fclose($pipes[0]);
> $rv=proc_close($proc);
> echo('rv: '.$rv.PHP_EOL);
> exit(0);
> --- end code ---
> 
> Why oh why?

When I read:

last comment in https://www.php.net/manual/en/function.proc-close.php

second comment in https://www.php.net/manual/en/function.proc-get-status.php

then one could get the idea that proc_get_status take the status
code for $pstat['exitcode'] and proc_close after that return -1.

Arne