作者gn00618777 (非常念旧)
看板C_and_CPP
标题[问题] 关於 timer signal 编程
时间Sat Mar 11 12:30:24 2017
版友好
我是在安卓上开发,写原生程式,也就是以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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1489206628.A.11C.html
1F:→ petercoin: 对底层不熟,但是open之後不用close吗? 03/12 00:36
※ 编辑: gn00618777 (61.220.69.181), 03/14/2017 13:36:01
2F:→ petercoin: if(fd)那边用完还是没有关闭? 03/14 13:38
※ 编辑: gn00618777 (61.220.69.181), 03/14/2017 17:11:56
3F:→ gn00618777: 我再修改了,只有在读取失败时,我才会关闭 03/14 17:13
※ 编辑: gn00618777 (61.220.69.181), 03/14/2017 19:50:21