我正在尝试获取linux中块设备的一些信息(特别是块大小),在C++中。有没有可能在不挂载设备的情况下获得设备的块大小,也可能不需要查看动态文件(就像/sys中的那些文件),但仅通过系统调用。
我尝试使用stat,但如果我询问有关/dev的信息,它将返回有关/dev/sdb2文件系统的数据。
如果系统调用不可能,我应该在哪里查找动态文件(也找不到它)。
发布于 2011-12-07 21:53:35
您希望使用ioctl,特别是BLKSSZGET。
引用linux/fs.h:
#define BLKSSZGET _IO(0x12,104)/* get block device sector size */未经测试的示例:
#include <sys/ioctl.h>
#include <linux/fs.h>
int fd = open("/dev/sda");
size_t blockSize;
int rc = ioctl(fd, BLKSSZGET, &blockSize);发布于 2014-01-22 15:52:26
我认为ioctl的值应该是unsigned long而不是size_t (最新的值更多地与内存相关),我也会将其初始化为0(只是为了防止BLKSSZGET返回unsigned int )。
#include <sys/ioctl.h>
#include <linux/fs.h>
int fd = open("/dev/sda");
unsigned long blockSize = 0;
int rc = ioctl(fd, BLKSSZGET, &blockSize);https://stackoverflow.com/questions/8416241
复制相似问题