【发布时间】:2014-10-09 05:57:11
【问题描述】:
我正在编写一个 Linux 命令行应用程序,该应用程序最终会导致从一个硬件获取数据。数据采集的本质是它将以某个定义的数据速率一致地向程序提供数据。一旦用户进入 RxData(接收循环),我们不想停止,除非我们从终端收到命令告诉它停止。我预见的问题是使用 getchar() 将在 while 循环的每次迭代中挂起循环,因为程序将期望用户输入输入。我的这种行为有错吗?
附带说明,我知道在使用嵌入式设备时,您可以简单地检查一个寄存器以查看缓冲区是否增加,并使用它来确定是否从缓冲区读取。我在 Linux 应用程序上没有那么奢侈(或者我有吗?)。我可以运行一些这样的函数(我们称之为 getCharAvailable),检查是否已输入数据,然后向我的程序发出信号以停止获取数据吗?
我不能简单地使用 SIGINT,因为我需要向硬件发出信号以停止数据采集以及向记录的数据添加标头。需要有停止采集的信号。
【问题讨论】:
-
我建议为信号实现一个回调函数处理程序,(当接收到信号信号时)执行所有需要的清理,停止硬件,然后退出程序。