我用 C 代码开发了一个服务器。
我使用 accept()
函数让我的服务器监听给定的套接字。
我的服务器在线程中启动。
现在在其他线程中,对于某些情况,我想停止 accept()
阻塞,然后关闭相关套接字。
我该怎么做? shutdown()
可以这样做吗?
最佳答案
[这不适用于 Windows]
使用
sigaction()
安装一个信号处理程序,让我们说SIGUSR1
什么都不做,但未设置SA_RESTART
选项(另请参阅“信号处理程序中断系统调用和库函数”部分"在这个 man-page 上)。然后向阻塞进程发送一个
SIGUSR1
信号。
accept()
将返回 -1
并将 errno
设置为 EINTR
。
关于c - 如何终止套接字接受阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35754754/