기능이있는 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 : 기본 읽기 : 유효하지 않은 인수 오류 : 0 중단됨
내가 뭘 잘못하고 있니?
read
오류가 아닌 0을 반환하고 읽을 것이 없다는 것을 알려줍니다.
호출 하기 전에 select
/ epoll
를 사용 read
하여 읽을 실제 데이터가 있는지 확인할 수 있습니다 .
또한 항목을 MSGDEBUG
인쇄 errno
하고 동시에 변경 될 가능성이 높기 때문에 줄을 제거하십시오 . 따라서 이전이 아닌에서 발생한 perror
일에 대한 정보를 제공 할 수 있습니다.MSGDEBUG
read
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다