【发布时间】:2015-09-19 18:44:23
【问题描述】:
我的应用程序基本上是一个具有所有预期功能(如提示、历史记录等)的 CLI,它需要在 STDIN 上等待用户输入。为此,我正在使用 readLine 系统调用。我创建了一个网络套接字,用于将从用户读取的消息发送到服务器。我的应用程序是单线程的。因为我的应用程序被阻止用户输入,所以创建的套接字没有响应来自服务器的保持活动消息。我想知道是否有办法让 readLine 在一段时间后超时,这样我就可以轮询我的网络套接字并回来等待 readLine?。
我知道有一种解决方案可以让我生成一个线程来处理网络操作。但我不想让我的应用程序多线程。
【问题讨论】:
-
如果你在谈论 GNU readline 你可以使用
int rl_set_keyboard_input_timeout (int u) -
@Filip:我尝试使用它,但它不起作用。可能是我没有以正确的方式做到这一点。你能给我一些链接吗?
-
看起来可能需要 rl_catch_signals 和 rl_event_hook,不确定。
标签: c client readline libreadline