我想检测是否stdin
在很短的时间内打开了输入,并继续以任何一种方式执行,并将结果存储在中Bool
。(我的真正目标是在终端上运行的模拟中实现一个暂停按钮。第二次按键应使程序暂停,并应继续执行。)我试图使用,poll_fd
但不适用于stdin
:
julia> FileWatching.poll_fd(stdin, readable=true)
ERROR: MethodError: no method matching poll_fd(::Base.TTY; readable=true)
有没有办法对朱莉娅起作用?我已经找到了一个在python中有效的解决方案,并且我已经考虑过通过PyCall使用它,但是我正在寻找
bytesavailable(stdin)
这是一个示例用法。请注意,如果捕获键盘,则还需要自己处理Ctrl + C(在此示例中,仅检查块的第一个字节)。
如果要完全异步运行它,请放在循环@async
前面while
。但是,如果在这种情况下没有更多代码,则该程序将退出。
import REPL
term = REPL.Terminals.TTYTerminal("xterm",stdin,stdout,stderr)
REPL.Terminals.raw!(term,true)
Base.start_reading(stdin)
while (true)
sleep(1)
bb = bytesavailable(stdin)
if bb > 0
data = read(stdin, bb)
if data[1] == UInt(3)
println("Ctrl+C - exiting")
exit()
end
println("Got $bb bytes: $(string(data))")
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句