gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:42 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

关于“如何处理错误”,需要检查write()的返回值是否为-1,然后如果要区分在错误条件之间查看 errno 的值。

SIGPIPE 的特定情况下,如果尝试写入读取端已关闭的套接字,则会将其传递给进程。默认情况下,SIGPIPE 的传送将导致进程终止。如果你不想要这种行为,那么你需要显式地忽略 SIGPIPE (signal(SIGPIPE, SIG_IGN)),然后是 write() 调用将返回 -1 并且 errno 将等于 EPIPE

关于c - 如何正确使用套接字的 write() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2206675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com