我正在编写一个Linux命令行应用程序,最终会从一个硬件中获取数据。数据采集的本质是它将以某种确定的数据速率一致地向程序提供数据。一旦用户进入RxData(接收循环),我们不想停止,除非我们从终端获得命令告诉它停止。我预见到的问题是使用getchar()会在while循环的每次迭代时挂起循环,因为程序会期望用户输入输入。这种行为我错了吗?
另一方面,我知道在使用嵌入式设备时,您只需检查寄存器以查看缓冲区是否已增加,并使用它来确定是否从缓冲区读取。我在Linux应用程序上没有那么奢侈(或者我呢?)。是否有一些这样的功能(让我们称之为getCharAvailable)我可以运行,检查数据是否已输入,那么那么我的程序是否会停止采集数据?
我不能简单地使用SIGINT,因为我需要向硬件发出信号以停止数据采集,并为记录的数据添加标题。需要有一个信号来停止收购。
答案 0 :(得分:2)
在Linux(或任何其他Unix风格)中,您可以使用select
查看是否有关于2个(或更多)文件描述符,套接字或任何其他可以读取的内容的可用数据/ em>的。 (这就是系统调用存在的原因......)
答案 1 :(得分:0)
使用ncurse
库并在getch
模式
non-delay