blockdev --getsize64 在 C++ 中等效吗?

blockdev --getsize64 在 C++ 中等效吗?

blockdev --getsize64是否有相当于C++ 中的函数来计算/dev/block/sdb大小而不使用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 读写控制或从中读取/sys/class/block/sdb/size(此处大小为 512 个扇区)。

相关内容