[問題] 關於 timer signal 編程

看板C_and_CPP (C/C++)作者 (非常念舊)時間9年前 (2017/03/11 12:30), 9年前編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
版友好 我是在安卓上開發,寫原生程式,也就是以C來編寫 我寫了一個小程式,再一個回圈內做一個一秒後會執行 handlerFunc 的 function 後此function 每一秒後就會進來。 handlerFunc { ALOGD(變數 A) //印出 變數A = 0; //操作變數A alarm(1); } while { if(isHidOpen == false) { fd = open(/dev/hidraw0, O_RDWR); if(fd) { isHidOpen = true; signal(SIGALARM, handlerFunc); } else close(fd); } else { bytes_read = read(fd,buf,sizeof(buf)) 變數A++; if(bytes_read > 0) { ... } else { alarm(0); close(fd); } } } 運行時,總會隨機當掉,然後就系統重開,網路上查詢,看起來是 signal 會搶資源 造成死鎖產生,但還是不確定,沒有統一說法,有沒有達人,為在下指點一下呢? 感謝回復,我寫完整點補上我缺的 close 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.115.110.197 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1489206628.A.11C.html

03/12 00:36, , 1F
對底層不熟,但是open之後不用close嗎?
03/12 00:36, 1F
※ 編輯: gn00618777 (61.220.69.181), 03/14/2017 13:36:01

03/14 13:38, , 2F
if(fd)那邊用完還是沒有關閉?
03/14 13:38, 2F
※ 編輯: gn00618777 (61.220.69.181), 03/14/2017 17:11:56

03/14 17:13, , 3F
我再修改了,只有在讀取失敗時,我才會關閉
03/14 17:13, 3F
※ 編輯: gn00618777 (61.220.69.181), 03/14/2017 19:50:21

03/15 10:09, , 4F
https://goo.gl/SlRHGj 這篇網誌提供了解答
03/15 10:09, 4F
文章代碼(AID): #1Omtra4S (C_and_CPP)
文章代碼(AID): #1Omtra4S (C_and_CPP)