使用 ncurses 接收异步用户和外部输入

Posted

技术标签:

【中文标题】使用 ncurses 接收异步用户和外部输入【英文标题】:Receiving asynchronous user and external input using ncurses 【发布时间】:2012-11-13 01:45:57 【问题描述】:

我正在制作一个 2 人游戏,该游戏由玩家通过键盘控制,同时使用消息队列从服务器程序接收输入。最初我尝试在父进程中实现播放器控制台并创建一个子进程来响应来自服务器的消息,但是每次我用子进程修改屏幕时,它都会删除我在父进程中所做的所有更改 - 在其他换句话说,这些过程有单独的屏幕。看起来必须有一个进程同时管理键盘输入和服务器输入,但我不知道如何异步执行此操作。

有人知道怎么做吗?或者,我可以使用哪些其他库来制作带有 GUI 的游戏?

【问题讨论】:

为什么不使用线程?还是相同的全局屏幕结构?不使用它的副本。有用于执行异步操作的消息传递库,例如 dbus、zmq 或其他快速 ipc 技术。 【参考方案1】:

好的,如果有人感兴趣,我有解决方案。我使用来自 unistd.h 的 STDIN_FILENO 流和 poll 函数从键盘和管道读取数据,管道通知来自服务器的消息。

【讨论】:

以上是关于使用 ncurses 接收异步用户和外部输入的主要内容,如果未能解决你的问题,请参考以下文章

使用 GNU 阅读线;如何在同一程序中添加 ncurses?

Ubuntu18.04下make menuconfig缺少ncurses库

Camel Restlet异步发送对客户端的响应

执行同步和异步操作

ncurses 到外壳并返回弄乱键

如何在QNX中检测来自ncurses的屏幕调整大小事件?