在solaris中如何检测send()调用中的断开套接字?我不想使用信号 我尝试了SO_NOSIGPIPE和MSG_NOSIGNAL,但两者在Solaris中都不可用,我的程序因“断管”错误而被杀死。
有没有办法检测破裂的管道?
谢谢!
答案 0 :(得分:1)
您必须使用sigaction()
专门忽略SIGPIPE
信号:
struct sigaction act;
act.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &act, NULL);
...然后send()
将返回-1,errno
设置为EPIPE
。
答案 1 :(得分:1)
我想在Solaris中你只有有限的选择。咖啡馆建议的AFAIK,sigaction似乎是最好的解决方案。