如何解决来自文件fd的文件系统fd
我的程序打开一个文件,并想要为其设置O_DIRECT
。但是程序假定块大小为512。因此,我需要检查该大小。 man 2 open
建议这样做ioctl(filesystem_fd,BLKSSZGET,&block_size)
。
我的问题是:如何从普通文件filesystem_fd
中获得此fd
?
解决方法
您不需要这样做。如果您想知道文件所在文件系统的块大小,只需查看st_blksize。那是:
#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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。