在等待阻止操作时执行某些操作

时间:2014-04-28 16:45:25

标签: lua curses

我正在尝试在Lua中编写一个curses程序(主要是为了便于开发,然后将其移植到C)。它需要经常为用户发送命令做好准备,但我也希望它能够对其他信号起作用,比如定时器的到期。此示例的用途可能是闪烁指示符,如果用户花费太长时间则会唠叨用户,并打印通过网络收到的消息。

当我调用curses.getch()时,程序在运行下一条指令之前等待它返回数据。如果在按下某个键之前发生任何其他事件,脚本将无法对其作出反应,除非采取其他措施来改变它。

我尝试使用curses.halfdelay()curses.getch()在短时间后退出,以便在再次调用之前可以完成其他操作,但这会导致奇怪的错误。我也考虑过学习使用pthreads,但我不知道从哪里开始。我正在运行Linux,我不介意该解决方案是否在Windows上不起作用(因为我已经在使用curses)。

编辑:我可能通过提供如此多的与curses相关的细节来误导人们,但我真的更喜欢可以与其他阻止操作一起使用的更通用的解决方案。

1 个答案:

答案 0 :(得分:2)

在curses空间中,

halfdelay()和(更常见的)nodelay()是正确的解决方案。我可以向你保证,他们确实在一般情况下工作。您必须更加具体地了解您的错误"。

与此同时,尽管它不是纯粹的诅咒解决方案(并且不能与PDCurses一起工作),但在这种情况下,人们有时会使用select()来等待来自的输入< / em> curses或网络套接字。