2012-02-13 18 views
15

我有一個非常簡單的問題,但我沒有設法在整個週末都找到任何答案。我正在使用sendto()函數,它返回錯誤代碼14:EFAULT。該手冊頁描述爲:unix套接字錯誤14:EFAULT(壞地址)

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

我相信,這是在說我指定的IP地址,但現在我懷疑這可能是因爲它指的是消息緩衝區的內存地址 - 我無法在任何地方找到任何澄清,任何人都可以清除它?

謝謝, Ĵ

+0

你給sendmsg的'const struct msghdr * message'參數裏面的東西是無效的,如果你需要更多細節的幫助,發佈一些相關的代碼。 – nos 2012-02-13 13:14:48

回答

24

EFAULT它發生,如果某些參數傳遞給sendto(或者更一般地任何系統調用)的存儲器地址是無效的。把它看作是關於你的系統調用的內核域中的一種SIGSEGV。例如,如果您傳遞空或無效的緩衝區指針(用於讀取,寫入,發送,接收...),您將獲得那個

請參閱errno(3),sendto(2) etc ...手冊頁。

EFAULT根本與IP地址無關。

+0

啊哈好吧謝謝你,我會檢查我的緩衝區指針,當我回家看看是否修復它! – aktungmak 2012-02-13 13:34:40

+0

是的,那是它!我有一些困惑的指針,謝謝! – aktungmak 2012-02-17 16:46:13

相關問題