gpt4 book ai didi

C 读() : Invalid arguments

转载 作者:太空宇宙 更新时间:2023-11-04 10:21:20 28 4
gpt4 key购买 nike

我正在尝试使用函数 read() 从 nbd 设备读取数据

代码如下:

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__

我收到了错误信息:

Error!!! dedup.c: 554: main read: Invalid argument err: 0 Aborted

我做错了什么吗?

最佳答案

read 返回 0,这不是错误,它只是告诉您没有可读取的内容。

您可以在调用read 之前使用select/epoll 来确保有实际数据要读取。

此外,删除 MSGDEBUG 行,因为它正在打印内容并且很可能同时更改 errno,所以你的 perror 可能会给你有关发生在 MSGDEBUG 中的信息,而不是在它之前的 read 中。

关于C 读() : Invalid arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43734318/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com