#42044 [Bgs]: stream_select
| From: | zeusgerde at arcor dot de | Date: | Thu, 19 Jul 2007 09:39:29 +0000 |
| Subject: | #42044 [Bgs]: stream_select | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-115223@lists.php.net to get a copy of this message | ||
ID: 42044
User updated by: zeusgerde at arcor dot de
Reported By: zeusgerde at arcor dot de
Status: Bogus
Bug Type: Streams related
Operating System: Windows XP
PHP Version: 5.2.3
New Comment:
Removed the @
Added error_reporting(E_ALL);
display_errors is on
Result: the same as mentioned in first post
> Also read the manual page for stream_select again
I did but did not find anything matching my problem.
http://php.net/stream_select says:
| Note: When stream_select() returns, the arrays read, write and
| except are modified to indicate which stream resource(s) actually
| changed status.
Seems not to change anything.
http://php.net/stream_select says:
| On error FALSE is returned and a warning raised (this can happen if
| the system call is interrupted by an incoming signal).
FALSE is not returned. No warning raised.
http://php.net/stream_select says:
| Note: If you read/write to a stream returned in the arrays be aware
| that they do not necessarily read/write the full amount of data you
| have requested. Be prepared to even only be able to read/write a
| single byte.
I can not read a single byte.
Previous Comments:
------------------------------------------------------------------------
[2007-07-19 09:23:46] jani@php.net
Remove the @ in front of stream_select() and you'll know why your code
does not work. Also read the manual page for stream_select again:
http://www.php.net/stream_select
------------------------------------------------------------------------
[2007-07-19 09:04:40] zeusgerde at arcor dot de
Description:
------------
I try to read from STDIN in the windows console (cmd.exe).
With the code below I get as expected "0" several times until I start
typing.
But when I start typing (not hitting enter) I get "3", all arrays
contain STDIN, STDERR and STDOUT and fread() blocks (of course).
The same happens if I focus on another window with the mouse cursor.
Reproduce code:
---------------
while (1) {
$aException = $aWrite = $aRead = Array(STDIN, STDERR, STDOUT);
$iChangedStreams = @stream_select($aRead, $aWrite, $aException, 1,
0);
echo $iChangedStreams;
if ($iChangedStreams) {
if (in_array(STDIN, $aRead, true)) {
$strBuffer = fread(STDIN, 1);
}
}
}
Expected result:
----------------
$aRead == Array(STDIN);
$aWrite == Array(STDIN, STDOUT, STDERR);
$aException == Array();
/* not sure about STDIN in $aWrite */
Actual result:
--------------
$aRead == Array(STDIN, STDOUT, STDERR);
$aWrite == Array(STDIN, STDOUT, STDERR);
$aException == Array(STDIN, STDOUT, STDERR);
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=42044&edit=1