ruby – 如何在不暂停脚本的情况下收听STDIN输入?

ruby – 如何在不暂停脚本的情况下收听STDIN输入?,第1张

概述我有一个while循环一直在监听传入的连接并将它们输出到控制台.我希望能够通过控制台发出命令而不影响输出.我试过了: Thread.new do while true input = gets.chomp puts "So I herd u sed, \"#{input}\"." #Commands would be in this sc 我有一个while循环一直在监听传入的连接并将它们输出到控制台.我希望能够通过控制台发出命令而不影响输出.我试过了:

Thread.new do    while true        input   = gets.chomp        puts "So I herd u sed,\"#{input}\"."        #Commands would be in this scope    endend

但是,这似乎会暂停我的整个脚本,直到收到输入;即使这样,我在这个之前启动的一些线程似乎也没有执行.我试过看Tcpsocket的select()方法无济于事.

解决方法 不确定您希望在示例中“继续运行”的命令在哪里.试试这个小脚本:

Thread.new do  loop do    s = gets.chomp    puts "You entered #{s}"    exit if s == 'end'  endendi = 0loop do  puts "And the script is still running (#{i})..."  i += 1  sleep 1end

从STDIN读取是在一个单独的线程中完成的,而主脚本继续工作.

总结

以上是内存溢出为你收集整理的ruby – 如何在不暂停脚本的情况下收听STDIN输入?全部内容,希望文章能够帮你解决ruby – 如何在不暂停脚本的情况下收听STDIN输入?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1229224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存