|
发表于 2007-7-19 19:58:36
|
显示全部楼层
你好,我想请教一下,act.sa_flags |= SA_RESTART;是设置这个信号中断处理是重启刚才的系统调用, 但是我在看<UNIX网络编程>这本书的时候, 上面5.9节说到当我们编写捕获信号的程序时, 必须对慢系统调用返回EINT有所准备. 即使某个实现 支持SA_RESTART标志, 也并非所有的被中断的系统调用都可以自动重启.
所以我觉得你刚才说的第二种方法是可行的, 但是第一种方法会不会不太完全可靠? 我个人认为应该将两个合在一起或者用第二个, 你认为呢?
另外再请教一下, 如果将两个合在一起了, 那么如果我的系统调用是允许重启的, 那么在信号处理之后就不会执行到errno==EINTR这一步而是就直接继续执行accept()调用吗?望指教. |
|