为什么Go中的Sendto()系统调用不返回发送的字节数?

问题描述 投票:0回答:1

在Go的标准库中,网络系统调用Sendto()看起来像这样:

Windows

func Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error)

Unix

func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error)

但是,基础系统调用返回所有操作系统(LinuxWindows)上发送的字节数,所以Go为什么只返回错误?

sockets go network-programming system-calls
1个回答
0
投票
在所有操作系统和体系结构上,

C0]都不统一,因此您可以始终依靠返回的信息(至少不是当前的Go源码正在使用它)。我跟踪了一些特定于arch / OS的文件,发现在ARM64上通过OpenBSD进行的跟踪可以归结为syscall,这似乎并没有显示出可行的回报。作为最高级别的Syscall6 function here函数必须在操作系统和体系结构之间统一工作,并且并非每个函数都支持低级别的返回值,它不会自行返回一个以保持统一性。

© www.soinside.com 2019 - 2024. All rights reserved.