Ошибка сокета 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-адресами.