我正在研究Linux内核,特别是输入子系统。我有兴趣为不同的输入事件(主要是键盘和鼠标)读取/ dev / input / eventX设备。
然而read()
操作会阻塞。我唯一能想到的是创建一个所有键盘键和鼠标按钮的状态,然后创建一个新线程来读取键盘和鼠标状态(这些线程可能会不时被阻止),并从我的主进程,访问键盘和鼠标的状态。
但是,我在C ++和Linux下的非阻塞编程方面不是很有经验,我认为每个设备的线程可能都是一种过度杀伤。
我想知道是否有其他方法以非阻塞的方式处理输入,或者使用线程很好?
谢谢,skwee。
答案 0 :(得分:1)
您可以查看民意调查系统调用。用于处理多个文件描述符上的I / O.一种可能性是只生成一个线程来轮询多个文件描述符上的事件。
答案 1 :(得分:1)
您可以将文件说明设置为非阻止。您还可以使用select / poll来检查是否可以读取数据,在这种情况下您不需要非阻塞。见这个帖子;