2012-02-13 12 views
15

Tengo una pregunta muy simple, pero no he podido encontrar ninguna respuesta para todo el fin de semana. Estoy usando la función sendto() y está devolviendo el código de error 14: EFAULT. Las páginas del manual describen como:socket unix error 14: EFAULT (dirección incorrecta)

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

yo estaba convencido de que esto estaba hablando de la dirección IP que estaba concretando, pero ahora sospechan que podría ser el memoria dirección del búfer de mensajes que se está refiriendo a - No puedo encontrar ninguna aclaración sobre esto en cualquier lugar, ¿alguien puede aclarar esto?

Gracias, J

+0

algo dentro del argumento 'const struct msghdr * message' que le dio a sendmsg no es válido, publique algún código relevante si desea ayuda sobre más detalles. – nos

Respuesta

24

EFAULT que suceda si la dirección de memoria de algún argumento pasado a sendto (o más generalmente a cualquier llamada al sistema) no es válido. Piense en ello como una especie de SIGSEGV en kernel land con respecto a su syscall. Por ejemplo, si pasa un puntero de búfer nulo o no válido (para leer, escribir, enviar, recibir ...), obtiene

Ver errno(3), sendto(2) etc ... páginas de manual.

EFAULT no está relacionado con las direcciones IP en absoluto.

+0

Aha, gracias, verifico el puntero de mi buffer cuando llegue a casa y veo si eso lo arregla! – aktungmak

+0

sí, eso lo hizo! ¡Tengo algunos de mis indicadores confundidos, gracias! – aktungmak

Cuestiones relacionadas