本文共 3124 字,大约阅读时间需要 10 分钟。
介绍FUSE提供了一些方法来简化选项处理。您可分析的参数和手动告诉他们FUSE,或者你可能会问FUSE为您解析命令行。不管你是否选择下列方法之一或两者兼而有之,你有初始化结构fuse_args,存储参数:参数 输入/输出 描述诠释ARGC 输入 参数计数的char * argv的 输入 '\ 0'结束的字符串数组的参数初始化例子:/ /初始化一个空的参数列表结构fuse_args的ARG游戏= FUSE_ARGS_INIT(0,NULL);/ /初始化参数的值列表/ /在命令行收到的主结构fuse_args的ARG游戏= FUSE_ARGS_INIT(ARGC ARGV);fuse_opt_add_arg此功能可让您手动添加参数的结构fuse_args列表。参数 输入/输出 描述fuse_args *参数 产量 将存储新的参数列表,其中的fuse_args的char * argv的 输入 的参数添加的fuse_args列表中在下面的例子中,我们假设一个命令行语法,其中第二个参数是具体的一些文件系统的实现。所有其它参数是FUSE本地的参数。 INT主(argc,焦炭*的argv []){ 结构fuse_args的ARG游戏= FUSE_ARGS_INIT(0,NULL); ; (i = 0;我ARGC,我+ +){ 如果(在i == 2) MyParameter的ARGV [我]; 其他 fuse_opt_add_arg(&参数的argv []); } 返回fuse_main(args.argc,args.argv,my_operations,NULL);} fuse_opt_parse
此功能可让您手动添加参数的结构fuse_args列表。参数 输入/输出 描述fuse_args *参数 输入 fuse_args列表中的参数存储结构myfs_config *配置 产量 我的文件系统的特定参数将被存储的参数列表fuse_opt * myfs_opts 输入 我的文件系统所接受的选项列表(* myfs_opt_proc)(无效数据,为const char * arg的,int键,结构fuse_args outargs) 输入 一个回调函数的指针将被调用来处理每一个参数,在命令行中发现fuse_opt_parse在下面的例子中,我们假设一个命令行语法,其中的一些文件系统实现的具体参数混合与本机的保险丝参数。例子:“静态的诠释myfs_opt_proc(void *的数据,为const char * arg的,int键,结构fuse_args * outargs){ 如果满足(key == FUSE_OPT_KEY_NONOPT的&& MyParameter的== NULL){ MyParameter的= strdup(阿根廷); 返回0; } 返回1;}INT主(argc,焦炭*的argv []){ 结构fuse_args的ARG游戏= FUSE_ARGS_INIT(ARGC ARGV); fuse_opt_parse(&参数,NULL,NULL,myfs_opt_proc); 返回fuse_main(args.argc,args.argv,my_operations,NULL);}/ /添加新的参数之前调用fuse_main():INT主(argc,焦炭*的argv []){ 结构fuse_args的ARG游戏= FUSE_ARGS_INIT(ARGC ARGV); fuse_opt_parse(&参数,NULL,NULL,NULL); fuse_opt_add_arg(参数“-O模块子目录,子目录/富”); 返回fuse_main(args.argc,args.argv,my_operations,NULL);}/ /一个更复杂的例子:结构myfs_config { myNum的初始值; 字符* MyString的; 诠释mybool;};枚举{ KEY_HELP, KEY_VERSION,};#定义MYFS_OPT(T,P,V){T,offsetof的(myfs_config,P),V}静态结构fuse_opt myfs_opts [] = { MYFS_OPT(“将myNum =%I”中,myNum 0) MYFS_OPT(“-N%I”中,myNum,0), MYFS_OPT(“myString的=%”,myString中,0), MYFS_OPT(“mybool”,mybool,1), MYFS_OPT(“nomybool”,mybool,0), MYFS_OPT(“ - mybool = true”的,mybool,1), MYFS_OPT(“ - mybool =假”,mybool 0), FUSE_OPT_KEY(“-V”,KEY_VERSION), FUSE_OPT_KEY(“ - 版”,KEY_VERSION) FUSE_OPT_KEY(“小时”,KEY_HELP), FUSE_OPT_KEY(“ - 帮助”,KEY_HELP) FUSE_OPT_END};“静态的诠释myfs_opt_proc(void *的数据,为const char * arg的,int键,结构fuse_args * outargs){ 开关(钥匙){ 情况下KEY_HELP: 与fprintf(stderr中, “用法:%s的挂载点[选项] \ n” “\ n” “一般选项:\ n” “-O选项,[选择...]安装选项\ n” “-h - help打印帮助\ n” “-V - version显示版本\ n” “\ n” “Myfs选项:\ n” “-O将myNum = NUM \ n” “-O myString的= STRING \ n” “-O mybool \ n” “-O nomybool \ n” “-N NUM一样omynum = NUM'\ n” “ - mybool BOOL相同'mybool”或“nomybool”\ n“ “,outargs>的argv [0]); fuse_opt_add_arg(outargs,“何先生”); fuse_main(outargs - > ARGC,outargs - > ARGV,与my_operations,NULL); 出口(1); 案例KEY_VERSION: 与fprintf(stderr中,“Myfs版本是%s \ n”,PACKAGE_VERSION); fuse_opt_add_arg(outargs,“ - 版”); fuse_main(outargs - > ARGC,outargs - > ARGV,与my_operations,NULL); 出口(0); } 返回1;}INT主(argc,焦炭*的argv []){ 结构fuse_args的ARG游戏= FUSE_ARGS_INIT(ARGC ARGV); myfs_config配置; memset的(CONF,0,大小(配置)); fuse_opt_parse(参数,和CONF,myfs_opts,myfs_opt_proc); 返回fuse_main(args.argc,args.argv,my_operations,NULL); 转载于:https://my.oschina.net/gddyl/blog/110439