c - 如何终止套接字接受阻塞

标签 c linux sockets networking

我用 C 代码开发了一个服务器。

我使用 accept() 函数让我的服务器监听给定的套接字。

我的服务器在线程中启动。

现在在其他线程中,对于某些情况,我想停止 accept() 阻塞,然后关闭相关套接字。

我该怎么做? shutdown() 可以这样做吗?

最佳答案

[这不适用于 Windows]

  • 使用 sigaction()安装一个信号处理程序,让我们说 SIGUSR1 什么都不做,但未设置 SA_RESTART 选项(另请参阅“信号处理程序中断系统调用和库函数”部分"在这个 man-page 上)。

  • 然后向阻塞进程发送一个SIGUSR1信号。

accept() 将返回 -1 并将 errno 设置为 EINTR

关于c - 如何终止套接字接受阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35754754/

相关文章:

c - Arch Linux 上的 OpenGL 3.3

c - Clion-如何将txt文件的地址作为参数传递给main?

ruby - 在原始套接字上接收 UDP 数据报?

sockets - 从半开套接字读取

c++ - 可以在linux程序中使用带有msvc的在windows上构建的lib

c - "Connected"UDP套接字,双向通信?

c++ - 位扩展字节数组

c - 当我之前释放内存时 malloc 是否更快

c - Backspace(\b) 不清除非规范模式 termios 中的文本

java - 来自客户端计算机本身的客户端请求能否由服务器上的 java 处理?