send()问题

Jay*_*Jay 2 c networking

当我使用网络浏览器测试我的程序时,我可以写入套接字/ FD就好了,所以我决定循环它并切断连接中间连接,我注意到了一个问题.当套接字不可用时,send()能够关闭整个程序.我认为问题在于该程序陷入了陷阱22并自行关闭.所以我设置套接字不阻止.没变.有关为什么会发生这种情况的任何想法?

else if ( b->temp_socket_list[read].revents & POLLOUT ) {  
    printf ( "#Write#\n" );  
    char *done = "Done!";  
    int sent = send ( sock, done, 5, 0 );  
    printf ( "end\n", sent );  
}  
Run Code Online (Sandbox Code Playgroud)

Gre*_*ill 5

这可能是由于SIGPIPE信号的默认操作.要忽略此信号,请使用以下内容:

signal(SIGPIPE, SIG_IGN);
Run Code Online (Sandbox Code Playgroud)

然后,套接字错误将报告为套接字函数的返回值,而不是信号.