小编dan*_*mau的帖子

PHP CLI:如何从TTY读取单个输入字符(无需等待回车键)?

我想读的,一时间从PHP命令行中的一个字符,但它好像有某种输入缓冲从某处防止这种.

考虑以下代码:

#!/usr/bin/php
<?php
echo "input# ";
while ($c = fread(STDIN, 1)) {
    echo "Read from STDIN: " . $c . "\ninput# ";
}
?>
Run Code Online (Sandbox Code Playgroud)

键入"foo"作为输入(并按Enter键),我得到的输出是:

input# foo
Read from STDIN: f
input# Read from STDIN: o
input# Read from STDIN: o
input# Read from STDIN: 

input# 
Run Code Online (Sandbox Code Playgroud)

期待的输出是:

input# f
input# Read from STDIN: f

input# o
input# Read from STDIN: o

input# o
input# Read from STDIN: o

input# 
input# Read from STDIN: 

input# 
Run Code Online (Sandbox Code Playgroud)

(即,在键入字符时读取和处理字符).

但是,目前,只有在按下输入后才会读取每个字符.我怀疑TTY正在缓冲输入.

最终我希望能够读取按下箭头,向下箭头等按键.

php stdin command-line-interface buffering tty

25
推荐指数
3
解决办法
2万
查看次数

标签 统计

buffering ×1

command-line-interface ×1

php ×1

stdin ×1

tty ×1