在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/

10-11 05:14
查看更多