[問題] 請問如何寫"按某鍵中止"?

看板C_and_CPP (C/C++)作者 (沒有存在感的人)時間10年前 (2015/09/25 00:23), 編輯推噓5(5010)
留言15則, 10人參與, 最新討論串1/1
開發平台(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

09/25 00:31, , 1F
還是只能用multithreading的作法?
09/25 00:31, 1F

09/25 01:00, , 2F
這個需求應該可以用 select 辦到, 但就不是用 usleep
09/25 01:00, 2F

09/25 04:46, , 3F
不能用break嗎
09/25 04:46, 3F

09/25 06:37, , 4F
按 Ctrl-C 來結束可以嗎?
09/25 06:37, 4F

09/25 10:41, , 5F
select搞定
09/25 10:41, 5F

09/25 11:44, , 6F
linux input.h 會是你要的嗎?
09/25 11:44, 6F

09/25 15:09, , 7F
程式中寫個 sig_handler 並使用 signal(SIGINT, sig_handler)
09/25 15:09, 7F

09/25 15:10, , 8F
shell 下寫: stty intr P; my_prog; stty intr ^C;
09/25 15:10, 8F

09/25 15:19, , 9F
(統合上述 Ctrl-C 的建議和原PO輸入P的需求 :P)
09/25 15:19, 9F

09/25 15:53, , 10F
不能用Ctrl+C,我先用select寫寫看,感謝
09/25 15:53, 10F

09/26 12:21, , 11F
如果不使用select的話,估狗getchar non blocking也有解
09/26 12:21, 11F

09/26 18:00, , 12F
ncurses, nodelay 試試看, 這應該是最簡單的作法
09/26 18:00, 12F

09/26 18:01, , 13F
否則你就要修改 tty 的屬性設定, tcgetattr, tcsetattr
09/26 18:01, 13F

09/26 18:01, , 14F
要看的資料比較多一些
09/26 18:01, 14F

09/28 08:55, , 15F
kbhit()比較簡單吧...
09/28 08:55, 15F
文章代碼(AID): #1M12E6-I (C_and_CPP)
文章代碼(AID): #1M12E6-I (C_and_CPP)