gpt4 book ai didi

c - SIGPIPE(OSX)和断开连接的套接字?

转载 作者:行者123 更新时间:2023-12-01 09:28:10 24 4
gpt4 key购买 nike

我正在开发一个通过 TCP 连接到服务器的应用程序。

如果套接字由于某种原因被关闭,我最终会进入 SIGPIPE 处理程序。

我该怎么做才能使 recv 和 send 只在断开/关闭的套接字上返回错误?

谢谢

最佳答案

我发现在 OS X 上忽略 SIGPIPE 无效。请改用 SO_NOSIGPIPE。请注意,这是在套接字上设置一次,而不是在每次调用 send() 时请求的 MSG_NOSIGNAL。

int socket = accept (...); /* (or however you're getting the socket) */
int option_value = 1; /* Set NOSIGPIPE to ON */
if (setsockopt (socket, SOL_SOCKET, SO_NOSIGPIPE, &option_value, sizeof (option_value)) < 0) {
perror ("setsockopt(,,SO_NOSIGPIPE)");
}

关于c - SIGPIPE(OSX)和断开连接的套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19509348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com