wcm*_*sen 5 ruby sockets telnet libreadline
我在Ruby中实现了一个小的telnet服务器.我目前面临的问题是我想添加readline支持,以便我可以使用tab-completion和命令行历史记录支持.我查看了Readline库,但似乎它只能通过stdin工作.有没有办法在Ruby中这样做(我注意到Python的解决方案)?
您可以通过将管道插入 readline 来完成此操作。while下面是一个使用ri readline 文档中的循环的示例,该循环仅将command 1, command2,command 3发送到 readline。
require 'readline'
rd, wr = IO.pipe
(1..3).each do |i|
wr.puts "command #{i}"
end
wr.close
Readline.input = rd
while buf = Readline.readline('', true)
p Readline::HISTORY.to_a
print("-> ", buf, "\n")
end
Run Code Online (Sandbox Code Playgroud)
输出:
["command 1"]
-> command 1
["command 1", "command 2"]
-> command 2
["command 1", "command 2", "command 3"]
-> command 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |