0

我有两个 php cli 脚本。第一个管道数据到第二个。我希望第二个提示用户确认。这可能吗?

我正在使用 wordpress 的php-cli-tools,但从我的基本测试来看,我的问题似乎一般适用于 php。(即 fgets()、readline 等)

我永远无法让提示工作,因为它看起来总是会从以前的输入中读取 EOT 字符,即使我已经阅读过它......

然后,稍后,当我提示使用 fwrite 输出,然后 fgets() 输入时,什么也没有发生。程序只是在等待某些事情发生...不确定是什么...如果我使用库,我会收到错误“在输入期间捕获 ^D”。readline 也没有运气......

以前有人做过吗?

非常感谢!

4

1 回答 1

1

这个问题并不是真正特定于 PHP,它适用于任何语言。在 Unix 上,/dev/tty如果您想忽略输入重定向并直接从终端读取,则可以从标准输入读取而不是从标准输入读取。

function prompt_user($prompt) {
    $terminal = fopen("/dev/tty", "r+");
    if ($terminal) {
        fputs($terminal, $prompt);
        return fgets($terminal);
    }
}
于 2016-08-22T21:25:47.603 回答