Annotation of embedaddon/php/ext/standard/tests/streams/bug64770.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #64770 stream_select() fails with pipes from proc_open() 
                      3: --FILE--
                      4: <?php
                      5: 
                      6: $descs = array(
                      7:        0 => array('pipe', 'r'), // stdin
                      8:        1 => array('pipe', 'w'), // stdout
                      9:        2 => array('pipe', 'w'), // strerr
                     10: );
                     11: 
                     12: $other_opts = array('suppress_errors' => false, 'binary_pipes' => true);
                     13: 
                     14: $cmd = (substr(PHP_OS, 0, 3) == 'WIN') ? 'dir' : 'ls';
                     15: $p = proc_open($cmd, $descs, $pipes, '.', NULL, $other_opts);
                     16: 
                     17: if (is_resource($p)) {
                     18:        $data = '';
                     19: 
                     20:        while (1) {     
                     21:                $w = $e = NULL;
                     22:                $n = stream_select($pipes, $w, $e, 300);
                     23: 
                     24:                if ($n === false) {
                     25:                        echo "no streams \n";
                     26:                        break;
                     27:                } else if ($n === 0) {
                     28:                        echo "process timed out\n";
                     29:                        proc_terminate($p, 9);
                     30:                        break;
                     31:                } else if ($n > 0) {
                     32:                        $line = fread($pipes[1], 8192);
                     33:                        if (strlen($line) == 0) {
                     34:                                /* EOF */
                     35:                                break;
                     36:                        }
                     37:                        $data .= $line;
                     38:                }
                     39:        }
                     40:        var_dump(strlen($data));
                     41: 
                     42:        $ret = proc_close($p);
                     43:        var_dump($ret);
                     44: } else {
                     45:        echo "no process\n";
                     46: }
                     47: ?>
                     48: ==DONE==
                     49: --EXPECTF--
                     50: int(%d)
                     51: int(0)
                     52: ==DONE==

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>