首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件系统fd来自文件fd

文件系统fd来自文件fd
EN

Stack Overflow用户
提问于 2020-10-07 17:29:10
回答 1查看 60关注 0票数 0

我的程序打开一个文件,想要为它设置O_DIRECT。但程序假定块大小为512。所以,我需要检查一下那个尺码。man 2 open建议这样做,ioctl(filesystem_fd, BLKSSZGET, &block_size)

我的问题是:如何从普通文件的fd中获取此filesystem_fd

EN

回答 1

Stack Overflow用户

发布于 2020-10-07 22:59:59

你不需要这样做。如果想知道文件所在文件系统的块大小,只需在st_blksize中查找即可。这就是:

代码语言:javascript
复制
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char **argv)
{
        struct stat sb;
        char *name = argc > 1 ? argv[1] : argv[0];

        if( stat(name, &sb) == -1 ) {
                perror(name);
                return EXIT_FAILURE;
        }

        printf("Block size: %d\n", (int)sb.st_blksize);
        return EXIT_SUCCESS;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64241149

复制
相关文章

相似问题

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