blockdev --getsize64는 C++에서 동일합니까?

blockdev --getsize64는 C++에서 동일합니까?

blockdev --getsize64/dev/block/sdb을 사용하지 않고 크기를 계산하는 C++에 동일한 함수가 있습니까 system()?

답변자: Vojtech Trefny

#include <stdint.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/fs.h>

// ...

const char* pathname="/dev/sda";
int fd = open(pathname, O_RDONLY);
if (fd == -1) {
    die("%s", strerror(errno));
}

uint64_t size;
if (ioctl(fd, BLKGETSIZE64, &size) == -1) {
    die("%s", strerror(errno));
}

close(fd);

답변1

당신은 그것을 사용할 수 있습니다BLKGETSIZE64 I/W 제어또는 읽습니다 /sys/class/block/sdb/size(여기서 크기는 512 섹터입니다).

관련 정보