使用带有select的send时,我无法捕获SIGPIPE

时间:2019-05-25 04:07:56

标签: linux sockets select signals send

使用send和recv时,我无法捕获SIGPIPE。 但是,将send / recv与select一起使用时,我无法捕获SIGPIPE。 我的代码有什么问题?

// the select will block 10 seconds
ret = select(sockfd + 1, NULL, &write_fd, NULL, &tv);
if (FD_ISSET(sockfd, &write_fd))
{
    Printf("Server start to send...\n");
    signal(SIGPIPE, handle_sig);  // It seems doesn't work here
    ret = send(sockfd, buff, BUFF_SIZE , 0); 

    /*
        The handle_sig won't be execute, and the process just finished.
    */
}

这是服务器代码。当客户端关闭连接时,Select将立即返回,但handle_sig将不会执行。

0 个答案:

没有答案