readv:错误地址
答
Bad Address
是EFAULT
错误消息,这http://linux.die.net/man/2/read解释(在read()
错误码是一样的readv()
)为意味着buf
是您的过程的addressible存储器外部。对于readv()
,这意味着要么iov
(可能,但我想这会导致段错误,因为它只是库 - “解释”AFAIK),或者更可能的是iov_base
-指针之一(它被传递给相应的系统调用来实现readv()
)在你的可寻址内存之外; EFAULT
是告诉你数据交换的传入指针无效的内核方式。
检查NULL
指标或类似内容,并作为评论者说:valgrind
可以帮助您诊断问题的根源 - 如果您的调试符号可用于库和用户代码。
+0
是不好的指针 - 该库使用“int”而不是“ssize_t”叹息地计算偏移量。 – Anycorn 2012-04-10 07:00:33
与Valgrind一起运行,准备好调试符号,然后提供更多信息。 – 0xC0000022L 2012-04-09 20:33:25