[英]C read() : Invalid arguments
我正在尝试从具有功能read()
的nbd设备read()
这是代码:
static uint64_t hash_log_free_list;
int fd = open(argv[2], O_RDWR|O_LARGEFILE);
assert(fd != -1);
int err = read(fd, &hash_log_free_list, sizeof(uint64_t));
if (err != sizeof(uint64_t))
{
MSGDEBUG
perror("read");
printf("err: %d\n", err);
abort();
}
argv [2]是nbd设备:/ dev / nbd0
MSGDEBUG定义为打印__FILE __,__ LINE__和__FUNCTION__
我收到错误消息:
错误!!! dedup.c:554:主要读取:无效的参数err:0中止
难道我做错了什么?
read
返回0,这不是错误,它只是告诉您没有要读取的内容。
您可以在调用read
之前使用select
/ epoll
,以确保有实际数据要读取。
此外,除去MSGDEBUG
线,因为它是打印的东西,并最有可能改变errno
在同一时间,所以你perror
可能给你关于发生了什么信息MSGDEBUG
,而不是在read
之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.