function getStdin() { $ret = ""; $fp = fopen("php://stdin", "r"); if (is_resource($fp)) { $cnt = 0; stream_set_blocking($fp, 0); do { $buf = fread($fp, 512); if ($buf === "") { $cnt++; if ($cnt > 15) { break; } } else { $cnt = 0; $ret .= $buf; } } while (1); fclose($fp); } return $ret; }
手前のコマンドがゆっくり出力される場合、失敗します。
$ for i in $(seq 1 3); do echo $i; sleep 1; done 1 2 3 $ for i in $(seq 1 3); do echo $i; sleep 1; done | php wagnek.php 2| Basic Latin | 1| 1 1| Control Code...| 1| \n
必ず標準入力が有る場合 stream_set_blocking($fp, 0); をコメントアウトすると良いです。
0 件のコメント:
コメントを投稿