[問題] 如何一定時間終止scanf()

看板C_and_CPP作者 (咖啡)時間16年前 (2010/01/17 13:19), 編輯推噓2(208)
留言10則, 5人參與, 最新討論串1/1
目前小弟在試著寫個multithread的程式,其中一個thread loop用scanf() 來接收key進去的字串.不過再寫結束流程的時候這個thread會卡在scanf沒辦法結束. 所以想請問板上的大大有沒有方法讓scanf()經過一定時間沒有input的時候能自動結束. 又或是有其他可以檢查buffer的函數那我就可已先判斷buffer再使用scanf了 if(該函數){ scanf(%s,a); } 寫程式資歷不長,知道的函數不多還麻煩版上大大提供些意見 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.79.178

01/17 14:38, , 1F
if(gets(a)&&該函數) 讀到EOF時會結束XD
01/17 14:38, 1F

01/17 14:38, , 2F
還是我會錯意了Q Q
01/17 14:38, 2F

01/17 16:14, , 3F
unix 的話可以用 select() 先擋一層。
01/17 16:14, 3F

01/17 18:01, , 4F
andyisman大 我是希望沒輸入時執行緒不會停在scanf()^^:
01/17 18:01, 4F

01/17 18:04, , 5F
tinlans大 select()在C好像也有哦 在sys/select.h裡
01/17 18:04, 5F

01/17 18:05, , 6F
似乎可以用 目前我用itoa大建議的kbhit()放在if判定
01/17 18:05, 6F

01/17 18:05, , 7F
沒輸入的話就會直接跳掉 這樣連wait time都省了^^
01/17 18:05, 7F

01/17 18:17, , 8F
用unblock的 scanf應該做不到@@
01/17 18:17, 8F

01/17 20:42, , 9F
kbhit() 應該算是標準作法
01/17 20:42, 9F

01/19 10:41, , 10F
原來如此 謝謝提醒
01/19 10:41, 10F
文章代碼(AID): #1BKft5WM (C_and_CPP)