我正在阅读W. Richard Stevens的Unix Network Programming。 作者说,如果阻塞连接呼叫中断,我可以使用'选择'作为非阻塞连接的选择。阻止'connect'系统调用中断
我很困惑。如果我应该调用一个非阻塞连接,然后选择新的socktfd,或者应该选择传递给前一个阻塞连接调用的旧socketfd?
而且我在帖子中看到,如果信号动作与SA_RESTART标志一起传递,则说'连接'是可重新启动的。如果这样我完全可以忽略阻塞连接中断的情况?
我正在阅读W. Richard Stevens的Unix Network Programming。 作者说,如果阻塞连接呼叫中断,我可以使用'选择'作为非阻塞连接的选择。阻止'connect'系统调用中断
我很困惑。如果我应该调用一个非阻塞连接,然后选择新的socktfd,或者应该选择传递给前一个阻塞连接调用的旧socketfd?
而且我在帖子中看到,如果信号动作与SA_RESTART标志一起传递,则说'连接'是可重新启动的。如果这样我完全可以忽略阻塞连接中断的情况?
在提示符处输入'man 7 signal'。搜索EINTR。它解释了一切。如果您的流程中没有任何可能触发信号的代码,那么您可能不必担心这一点。或者你可以把EINTR看作是一个瞬态错误(类似于EAGAIN,EWOULDBLOCK),并且可以正常恢复。 – selbie 2013-03-16 05:28:10
什么是新sockfd?每个插座只有一个。调用connect()不会创建新的Le。 – EJP 2013-03-16 06:46:24