ошибка сокета unix 14: EFAULT (неверный адрес) - PullRequest
16 голосов
/ 13 февраля 2012

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

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

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

Спасибо, J

Ответы [ 2 ]

26 голосов
/ 13 февраля 2012

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

См. errno (3) , sendto (2) etc ... man pages.

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

0 голосов
/ 28 декабря 2018

EFAULT - это макрос, определенный в файле "include / uapi / asm-generic / errno-base.h"

#define EFAULT          14      /* Bad address */
...