我正在尝试在我的应用程序中输入密码并使用io:get_line/1
,它将字符写入输入的stdout。我的应用程序作为一个escript应用程序运行,由rebar构建。
根据文档,我正在尝试io:setopts([{echo, false}])
返回{error,enotsup}
并且无法成功完成回显。
我担心直接打开/dev/stdin
和/dev/stdout
因为它不是多平台的。
有关如何使用io:setopts
解决echo
限制的任何建议,或者知道如何完成我想要做的事情的替代方法?
答案 0 :(得分:3)
不幸的是,目前还没有简单的方法可以做到这一点。脚本使用旧版本的io服务器。 io:setopts([{echo, false}])
和io:get_password()
都不适用于escript。在Erlang mailing list上有一个关于它的话题。最好的解决方案是使用bash脚本来读取密码:
read -s password
./escript $password
其中escript类似于:
#!/usr/bin/env escript
main([Password]) ->
io:format(" -> ~p\n", [Password]).