簡體   English   中英

如何在Linux應用程序上使用C ++中的終端輸入來中斷循環/進程

[英]How to interrupt loop/process using terminal input in C++ on a Linux application

我正在編寫一個Linux命令行應用程序,該應用程序最終會導致從一件硬件中獲取數據。 數據采集​​的本質是,它將以某個定義的數據速率將數據一致地饋送到程序。 一旦用戶進入RxData(接收循環),我們就不想停止,除非我們從終端收到命令停止它的命令。 我預見到的問題是,使用getchar()會在while循環的每次迭代中將循環掛起,因為程序會期望用戶輸入輸入。 我在這種行為上錯了嗎?

附帶一提,我知道在使用嵌入式設備時,您可以簡單地檢查寄存器以查看緩沖區是否增加,然后使用該寄存器來確定是否從緩沖區中讀取。 在Linux應用程序上我沒有那么奢侈(或者是嗎?)。 是否可以運行一些這樣的函數(我們稱其為getCharAvailable),檢查是否已輸入數據,然后發出信號通知我的程序停止獲取數據?

我不能簡單地使用SIGINT,因為我需要向硬件發送信號以停止數據采集以及向記錄的數據添加標頭。 需要有一個信號來停止采集。

在Linux(或任何其他Unix風格)中,您可以使用select來查看2個(或多個)文件描述符,套接字或任何其他可讀取的東西上是否有可用數據。 (這就是該系統調用存在的原因...)

使用ncurse庫並以non-delay模式使用getch

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM