【发布时间】:2022-11-24 23:12:42
【问题描述】:
如果信号中断数据报套接字上的 sendto 或 recvfrom 调用,会发生什么情况?我可以期望这些调用总是返回 -1 和 errno == EINTR 或者它们可以返回正字节数,但我将完全重复调用?
【问题讨论】:
标签: sockets unix datagram sendto recvfrom
如果信号中断数据报套接字上的 sendto 或 recvfrom 调用,会发生什么情况?我可以期望这些调用总是返回 -1 和 errno == EINTR 或者它们可以返回正字节数,但我将完全重复调用?
【问题讨论】:
标签: sockets unix datagram sendto recvfrom
在数据报套接字上,sendto 和recvfrom 总是发送和接收完整的数据报,或者什么都不发送。如果他们可以停在数据报的中间,那将破坏数据报的点。
有一个例外 - 如果缓冲区太小,recvfrom 可能会切断数据报的结尾。接收到整个数据报,但您的程序无法看到所有数据报。
【讨论】: