如何正确使用套接字的write()函数?

时间:2010-02-05 11:04:47

标签: c sockets error-handling

我正在使用write()函数写入C中的套接字。我不是C专家,有时我知道这个函数可能会失败,在这种情况下它可以返回某种SIGPIPE。

这是我现在使用的简单代码:

if(write(sockfd, sendline, sizeof(sendline)) < sizeof(sendline))
    {
        printf("Failed to write string %s to socket" , sendline);
        return NULL;
    }

我的问题是,在使用此功能时,如何正确管理这类错误(SIGPIPE等)?

1 个答案:

答案 0 :(得分:4)

就“如何处理错误”而言,您需要检查write()的返回值是否为-1,然后如果要区分错误条件,请查看{的值{1}}。

errno的特定情况下,如果尝试写入读取结束的套接字,则将其传递给进程。默认情况下,SIGPIPE的传递将导致进程终止。如果您不想要此行为,则需要明确忽略SIGPIPESIGPIPE),然后signal(SIGPIPE, SIG_IGN)来电将返回write()-1将等于errno