打印

求助:关于网络编程,信号中断,阻塞式系统调用

求助:关于网络编程,信号中断,阻塞式系统调用

read函数在读一个连接时阻塞了,此时收到一个SIGALRM的信号,为什么read函数没有被中
断?虽然SIGALRM的信号处理函数执行了,但执行完后read函数还是继续阻塞,我想做的是执行完信号处理函数后,
read函数就不再执行了,退出阻塞,执行下一语句。

查了一些书,也在网上查一些资料,得到的结论是read可能中断后又被系统自动重启了,请问怎么解决,真的头都
大了。。。
每一天都在努力

TOP

哈哈~
我自己找到原因了!
是我在运行态后的信号没有改过来~~
每一天都在努力

TOP

^_^,自己解决比较深刻
知识在于积累,积分在于灌水

TOP

呵呵,楼主反应太快了,我刚想说是不是程序没有更改信号量,不过做出就好了
如果我可以……

TOP

其实很多问题都是要问过人才知道的啊~~~
多谢上面两位关心哦
每一天都在努力

TOP

我学信号量也学的够惨的,不过会了就很开心,咔咔
如果我可以……

TOP

是学操作系统时学吧,我也学得很辛苦
知识在于积累,积分在于灌水

TOP

哦?楼上也学过操作系统?
hand~hand`
每一天都在努力

TOP

什么叫运行态后的信号没有改过来,不明白

TOP

我也碰到过同样的问题,但不是SIGALRM信号,我用alarm(xx)在被阻塞函数前设置超时,当超时时阻塞可被中断,

可是当我换成自定义信号#define SIGSTOPTRAN (SIGUSR1 + 100)
后按照上面同样的做法,无效,根本无法中断被阻塞函数,虽然信号函数已经执行!

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-12-3 03:56 京ICP证060528 号

Designed By 17DST