2012-02-13 23 views
15

Tôi có một câu hỏi rất đơn giản, nhưng tôi đã không quản lý để tìm bất kỳ câu trả lời cho nó tất cả các ngày cuối tuần. Tôi đang sử dụng hàm sendto() và nó đang trả về mã lỗi 14: EFAULT. Các trang người đàn ông mô tả nó như:lỗi ổ cắm unix 14: EFAULT (địa chỉ không hợp lệ)

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

tôi đã bị thuyết phục rằng điều này đã nói về những địa chỉ IP tôi đã xác định, nhưng bây giờ tôi nghi ngờ nó có thể là bộ nhớ địa chỉ của bộ đệm thông điệp mà nó được đề cập đến - Tôi không thể tìm thấy bất kỳ sự giải thích nào về điều này ở bất cứ đâu, bất cứ ai có thể làm rõ điều này không?

Cảm ơn, J

+0

đối tượng bên trong đối số 'const struct msghdr * message' mà bạn đã gửi cho sendmsg không hợp lệ, hãy đăng một số mã có liên quan nếu bạn muốn được trợ giúp về các chi tiết cụ thể hơn. – nos

Trả lời

24

EFAULT Nó xảy ra nếu địa chỉ bộ nhớ của một số tham số truyền cho sendto (hoặc tổng quát hơn đối với bất kỳ cuộc gọi hệ thống) là không hợp lệ. Hãy suy nghĩ về nó như một loại SIGSEGV trong đất hạt nhân liên quan đến syscall của bạn. Ví dụ: nếu bạn vượt qua con trỏ đệm không hợp lệ hoặc không hợp lệ (để đọc, viết, gửi, nhận ...), bạn sẽ nhận được rằng

Xem errno(3), sendto(2) vv ... trang người đàn ông.

EFAULT không liên quan đến địa chỉ IP.

+0

Aha okay thankyou, tôi sẽ kiểm tra con trỏ đệm của tôi khi tôi về nhà và xem nếu thats sửa chữa nó! – aktungmak

+0

vâng, đã làm điều đó! Tôi đã có một số con trỏ của tôi bối rối, thankyou! – aktungmak

Các vấn đề liên quan