gpt4 book ai didi

c++ - 如何在 Linux 应用程序上使用 C++ 中的终端输入中断循环/进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:38 24 4
gpt4 key购买 nike

我正在编写一个 Linux 命令行应用程序,它最终会从一个硬件中获取数据。数据采集​​的本质是它将以某个定义的数据速率一致地将数据提供给程序。一旦用户进入 RxData(接收循环),我们不想停止,除非我们从终端得到一个命令来告诉它停止。我预见到的问题是,使用 getchar() 会在 while 循环的每次迭代中挂起循环,因为程序会期望用户输入。我的这种行为错了吗?

附带说明一下,我知道在使用嵌入式设备时,您可以简单地检查一个寄存器以查看缓冲区是否增加并使用它来确定是否从缓冲区读取。我在 Linux 应用程序上没有那​​么奢侈(或者我有吗?)。我可以运行一些这样的函数(让我们称之为 getCharAvailable),检查数据是否已输入,然后通知我的程序停止获取数据?

我不能简单地使用 SIGINT,因为我需要向硬件发出信号以停止数据采集并向记录的数据添加 header 。需要有停止采集的信号。

最佳答案

在 Linux(或任何其他 Unix 风格)中,您可以使用 select 来查看是否有关于 2 个(或更多)文件描述符、套接字或任何其他可以阅读。 (这就是这个系统调用存在的原因……)

关于c++ - 如何在 Linux 应用程序上使用 C++ 中的终端输入中断循环/进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com