【发布时间】:2021-08-11 06:11:32
【问题描述】:
我正在使用 fuse3 编写一个文件系统驱动程序,它应该解析所有 fuse 选项,然后接受两个参数,一个设备路径(或包含文件系统映像的文件)和一个挂载点。
有没有方便的方法使用fuse的命令行解析从命令行中提取设备?在我将它们交给 fuse 之前,我已经开始操纵这些参数:
struct fuse_args args;
const char *device = NULL;
memset(&args, 0, sizeof(args));
for (int i = 0; i < argc; ++i)
if (i > 0 && i == argc - 2 && *argv[i] != '-')
image = argv[i];
else
fuse_opt_add_arg(&args, argv[i]);
if (fuse_opt_parse(&args, &options, option_spec, NULL) == -1)
return 1;
if (!device) {
usage(argv[0]);
fuse_opt_add_arg(&args, "--help");
}
fuse_main(args.argc, args.argv, &oper, nullptr);
但是如果用户只指定了一个参数,这完全是粗鲁的,并且不太有效,除非该参数恰好是一个有效的挂载点,因为 fuse 似乎在打印帮助之前检查了挂载点的可行性。
这肯定是一件很常见的事情,所以我想知道这样一个文件系统的正确习惯用法是什么。
【问题讨论】:
标签: filesystems fuse