首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不在Linux中挂载的块设备信息

问不在Linux中挂载的块设备信息
EN

Stack Overflow用户
提问于 2011-12-07 21:41:45
回答 2查看 5.4K关注 0票数 5

我正在尝试获取linux中块设备的一些信息(特别是块大小),在C++中。有没有可能在不挂载设备的情况下获得设备的块大小,也可能不需要查看动态文件(就像/sys中的那些文件),但仅通过系统调用。

我尝试使用stat,但如果我询问有关/dev的信息,它将返回有关/dev/sdb2文件系统的数据。

如果系统调用不可能,我应该在哪里查找动态文件(也找不到它)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-07 21:53:35

您希望使用ioctl,特别是BLKSSZGET。

引用linux/fs.h:

代码语言:javascript
复制
#define BLKSSZGET  _IO(0x12,104)/* get block device sector size */

未经测试的示例:

代码语言:javascript
复制
#include <sys/ioctl.h>
#include <linux/fs.h>

int fd = open("/dev/sda");
size_t blockSize;
int rc = ioctl(fd, BLKSSZGET, &blockSize);
票数 9
EN

Stack Overflow用户

发布于 2014-01-22 15:52:26

我认为ioctl的值应该是unsigned long而不是size_t (最新的值更多地与内存相关),我也会将其初始化为0(只是为了防止BLKSSZGET返回unsigned int )。

代码语言:javascript
复制
#include <sys/ioctl.h>
#include <linux/fs.h>

int fd = open("/dev/sda");
unsigned long blockSize = 0;
int rc = ioctl(fd, BLKSSZGET, &blockSize);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8416241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档