Ошибка сокета unix 14: EFAULT (неправильный адрес)

У меня очень простой вопрос, но мне не удалось найти ответы на все выходные. Я использую функцию sendto(), и она возвращает код ошибки 14: EFAULT. Страницы руководства описывают это как:

"An invalid user space address was specified for an argument."

Я был убежден, что речь идет о IP-адресе, который я указывал, но теперь я подозреваю, что это может быть адрес памяти буфера сообщений, на который он ссылается - я не могу найти никаких разъяснений в этом месте, могу кто-нибудь прояснит это?

Спасибо, J

Ответы

Ответ 1

EFAULT Это произойдет, если адрес памяти какого-либо аргумента, переданного в sendto (или, в общем случае, любой системный вызов), недействителен. Подумайте об этом как о чем-то вроде SIGSEGV в ядре на землю в отношении вашего syscall. Например, если вы передаете нулевой или неверный указатель буфера (для чтения, записи, отправки, получения...), вы получаете это

См. errno (3), sendto (2) и т.д. man.

EFAULT вообще не связан с IP-адресами.