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