RE: [PHP-DEV] Re: [PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/TSRM/tsrm_win32.c trunk/TSRM/tsrm_win32.c
| From: | Andi Gutmans | Date: | Thu, 20 Aug 2009 17:13:57 +0000 |
| Subject: | RE: [PHP-DEV] Re: [PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/TSRM/tsrm_win32.c trunk/TSRM/tsrm_win32.c | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-45325@lists.php.net to get a copy of this message | ||
You may want to look at pcntl_exec() which is the UNIX equivalent of
what you want to do. It does not use sh and the pcntl extension is not
supported on Windows.
A Windows implementation may not fit this function signature but it's a
good place to start.
Andi
> -----Original Message-----
> From: Garrett Serack [mailto:garretts@microsoft.com]
> Sent: Thursday, August 20, 2009 7:24 AM
> To: Stas Malyshev; Pierre
> Cc: 'PHP Internals'
> Subject: RE: [PHP-DEV] Re: [PHP-CVS] svn: /php/php-src/
branches/PHP_5_3/NEWS
> branches/PHP_5_3/TSRM/tsrm_win32.c trunk/TSRM/tsrm_win32.c
>
> Dammit.
>
> I am indeed wrong in this. I was pretty sure that popen on Unix
> *didn't* go via 'sh', but after digging deeper, you are completely
> correct.
>
> We should revert that patch, and I'll write a new separate routine
> that doesn't use cmd.exe as a gateway.
>
> My Apologies.
>
> G
>
> -----Original Message-----
> From: Stanislav Malyshev [mailto:stas@zend.com]
> Sent: Wednesday, August 19, 2009 2:40 PM
> To: Garrett Serack; Pierre
> Cc: 'PHP Internals'
> Subject: [PHP-DEV] Re: [PHP-CVS] svn: /php/php-src/
branches/PHP_5_3/NEWS
> branches/PHP_5_3/TSRM/tsrm_win32.c trunk/TSRM/tsrm_win32.c
>
> Hi!
>
> > Initially, this prevents popen_ex from failing when the actual
> > executable doesn't exist, since "cmd.exe /c c:\foo\bar\xxx.exe" will
> > *always* successfully start a process. This can be seen in bug
> > #43327.
> >
> > Second, is that by having the intermediate process, I'm pretty sure
> > there's some extra-buffering of the input/output streams going on
> > (once for the child proc, and once for the cmd.exe). This (probably
> > along with a too-small pipe buffer) contributes to the behavior
found
> > in #44994.
> >
> > Finally, I can't for the life of me see what benefit this brings to
> > the table. Other languages don't need to put cmd.exe in the middle
> > of their children. The only case may be where someone wants to use
> > built-in cmd.exe commands like 'dir' on popen_ex() , which would not
> > be right anyway, and they should explicitly include the command
> > processor in their command line.
>
> It's pretty big semantic change, not just a bugfix, so I think it'd be
> nice to announce and discuss it on the list, not just put it as minor
> bugfix.
>
> Also it means that all output redirections, shell commands, etc. stop
> working for exec, system, etc. since they all use popen().
>
> I see code out there that uses popen-dependent functions with all this
> stuff, so it makes serious BC break.
> Also, on Unix system, popen etc. by default use shell.
>
> I recognize there might be a need for calling processes directly, but
I
> think this can and should be done in BC-compatible manner.
> --
> Stanislav Malyshev, Zend Software Architect
> stas@zend.com http://www.zend.com/
> (408)253-8829 MSN: stas@zend.com
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php