c - 在 Solaris send() 调用中检测损坏的管道

标签 c sockets solaris broken-pipe

在 solaris 中如何检测 send() 调用中损坏的套接字?我不想使用信号。
我尝试了 SO_NOSIGPIPE 和 MSG_NOSIGNAL,但两者在 Solaris 中都不可用,我的程序因“管道损坏”错误而被杀死。

有什么方法可以检测破损的管道吗?

谢谢!

最佳答案

您必须使用 sigaction() 专门忽略 SIGPIPE 信号:

struct sigaction act;

act.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &act, NULL);

...然后 send() 将返回 -1,errno 设置为 EPIPE

关于c - 在 Solaris send() 调用中检测损坏的管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2205455/

相关文章:

c - 如何在 C 中将指针转换为 double?

javascript - onValueChange 不断充斥我的套接字服务器

java - 无法从一台计算机远程接收数据

Solaris 的 Java 8 中缺少 javaws

c - 如何对 RAM 变量进行分组以防止使用 Gnu 编译器工具链进行填充?

c - 在 Matlab 和 C 之间共享数据

c++ - 从套接字无限读取

c - 获取Solaris内核模块中的进程启动时间

linux - Erlang SMP 在多核服务器上启用选项

c - 静态函数的外部声明是否会破坏内部链接?