readv:地址不好

时间:2012-04-09 20:31:18

标签: c unix system

在我使用的库中,由于Bad address我遇到了readv错误。

错误的根源是什么?是目的地还是来源? 为什么不是segfault呢?

1 个答案:

答案 0 :(得分:3)

Bad AddressEFAULT的错误消息,http://linux.die.net/man/2/read解释(read()错误代码与readv()相同),意思是{ {1}}位于进程的可寻址内存之外。对于buf,这意味着readv()(可能,但我想这会导致段错误,因为它只是库 - “解释”AFAIK),或者更可能是iov之一-pointers(传递给适当的系统调用来实现iov_base)在你的可寻址内存之外; readv()是告诉你传入的数据交换指针无效的核心方式。

检查EFAULT - 指针或类似内容,并且作为评论者说:NULL可以帮助您诊断问题的根源 - 如果您有可用于库的调试符号和用户代码。