从控制台获取单个字符,而无需在 Elixir/Erlang 中按回车键

Getting a single character from the console without hitting enter in Elixir/Erlang

提问人:gdonald 提问时间:10/30/2023 更新时间:11/1/2023 访问量:63

问:

我将我的 Elixir 应用程序从 1.8 版升级到 1.15.7 版。现在,我的代码无需按回车键即可从控制台获取单个字符,不再起作用:

{:ok, Port.open({:spawn, "tty_sl -c -e"}, [:binary, :eof])}

我安装了 Erlang 26.0.2,但似乎不再存在tty_sl。有没有另一种方法可以在不按回车键的情况下获得单个字符?

控制台 Erlang Elixir tty

评论

0赞 Onorio Catenacci 11/2/2023
值得一提的是,这个问答 stackoverflow.com/questions/77253655/ 可能与您的问题有关。

答:

0赞 Aleksei Matiushkin 11/1/2023 #1

很难说你实际上想要实现什么,但是是的,已经从 OTP 26 中删除了,转而支持内部 shell 处理。tty_sl

您可能需要的是生成一个常规命令,然后在它启动后立即向它发送 stty raw -echo 命令。tty