unix socket错误14:EFAULT(错误地址)

akt*_*mak 16 c sockets udp sendto

我有一个非常简单的问题,但我整个周末都找不到任何答案.我正在使用该sendto()函数,它返回错误代码14:EFAULT.手册页将其描述为:

"An invalid user space address was specified for an argument."
Run Code Online (Sandbox Code Playgroud)

我确信这是在谈论我指定的IP地址,但现在我怀疑它可能是它所指的消息缓冲区的内存地址 - 我无法在任何地方找到任何澄清,任何人都可以清除这一点吗?

谢谢,J

Bas*_*tch 27

EFAULT如果某个参数的内存地址传递给sendto(或更一般地说,对任何系统调用)无效,则会发生这种情况.可以把它想象成一个SIGSEGV关于你的系统调用的内核领域.例如,如果你传递一个null或无效的缓冲区指针(用于读取,写入,发送,接收......),你就可以得到它

请参阅errno(3),sendto(2)等...手册页.

EFAULT 根本与IP地址无关.