看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) lubuntu + gcc 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 正在構思一個函式,希望做到 - 如果沒有額外輸入,每隔一段時間顯示data (printf+usleep) - 如果在顯示的過程按P,則中止printf並呼叫別的處理函式 用getchar() + do while的話會變成一定要輸入某char才會重新loop... 我希望做到他"一直跑一直跑,直到我輸入P才中止" 請問大概要怎麼寫?可以的話請提供關鍵字或函式名稱 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 90.41.43.9 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1443111814.A.F92.html
wtchen: 還是只能用multithreading的作法? 09/25 00:31
uranusjr: 這個需求應該可以用 select 辦到, 但就不是用 usleep 09/25 01:00
ckp4131025: 不能用break嗎 09/25 04:46
jackylu63: 按 Ctrl-C 來結束可以嗎? 09/25 06:37
x000032001: select搞定 09/25 10:41
longlongint: linux input.h 會是你要的嗎? 09/25 11:44
yvb: 程式中寫個 sig_handler 並使用 signal(SIGINT, sig_handler) 09/25 15:09
yvb: shell 下寫: stty intr P; my_prog; stty intr ^C; 09/25 15:10
yvb: (統合上述 Ctrl-C 的建議和原PO輸入P的需求 :P) 09/25 15:19
wtchen: 不能用Ctrl+C,我先用select寫寫看,感謝 09/25 15:53
abiau: 如果不使用select的話,估狗getchar non blocking也有解 09/26 12:21
descent: ncurses, nodelay 試試看, 這應該是最簡單的作法 09/26 18:00
descent: 否則你就要修改 tty 的屬性設定, tcgetattr, tcsetattr 09/26 18:01
descent: 要看的資料比較多一些 09/26 18:01
haosan: kbhit()比較簡單吧... 09/28 08:55