Option parsing

2024-02-04 10:59
文章标签 option parsing

本文主要是介绍Option parsing,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为什么80%的码农都做不了架构师?>>>   hot3.png



介绍
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

这篇关于Option parsing的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677261

相关文章

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

with grant optionwith admin option

with admin option 用于系统权限授权,with grant option 用于对象授权。 但给一个用户授予系统权限带上with admin option 时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效,如授予A系统权限create session with admin option,然后A又把cre

micro/go-micro 介绍与源代码分析(二):命令行参数与 Option 机制

( micro/go-micro 本系列,是根据代码阅读顺序,边看边写,因此暂缺一篇工程目录文件综合性的介绍,最后补上) Option 机制 micro/go-micro 代码中,可以通过 Option 来显式配置微服务属性,来达成: 初始化微服务设置添加微服务某些功能(通过 Option 来传递 middleware )替换微服务某些功能(通过 Option 来替换插件) 具体例子,感

/usr/bin/ccache: invalid option -- 'E'

编译包含CUDA的OpenCV 时遇到问题 [ 1%] Built target proto[ 1%] Building NVCC (Device) object src/caffe/CMakeFiles/cuda_compile.dir/layers/cuda_compile_generated_split_layer.cu.o/usr/bin/ccache: invalid opti

kotlin项目报这种提示Please specify proper '-jvm-target' option

报错信息Cannot inline bytecode buit with JVM target 1.8 into bytecode that is being built with JVM target 1.6.Please specify proper '-jvm-target' option 解决方法: 在app目录下build.gradle文件里面添加 kotlinOptions{j

IDEA 编译项目时卡在Parsing java,最终报out of memory

今天在项目运行的时候莫名其妙报错: 报错内容: java.lang.OutOfMemoryError: GC overhead limit exceeded 原因: 通常是因为堆内存太小,无法有效管理正在创建和销毁的对象。 解决方法: 在 IDEA 的安装目录下找到 bin 文件夹,编辑 idea64.exe.vmoptions 调大初试堆内存大小和最大堆内存大小,变成如下值:

导入项目启动报错Unexpectedexception parsing XML document from file[H:\software\apache-tomcat-7.0.77\webapps\

导入项目启动报错Unexpectedexception parsing XML document from file[H:\software\apache-tomcat-7.0.77\webapps\ItcastOA\WEB-INF\classes\applicationContext.xml]       背景介绍: 导入项目报错1: ER

Command line option syntax error.type Command /? for help

电脑装思维导图的时候,报错显示“Command line option syntax error.Type Command /? for help.”就查了一下,原来是系统没有C++2005,需要安装,就上网下载了一个vcredist_x86.exe,但是双击安装,仍然出现这个错误。 没办法,接着上网查吧,是什么原因呢?网上说是因为该文件安装不支持中文安装路径,然后我就把文件夹改成了英文名称

thinkphp5支持跨域(post-get-option请求)

客户端跨域请求 客户端发送GET或POST之前, 可能会先发送OPTION请求,以查询服务是否支持跨域。所以thinkphp需要做两样事: 1、响应OPTION请求支持跨域。 2、响应实际的GET/POST请求支持跨域。 OPTION请求支持跨域 在public\index.php开始地方添加: if($_SERVER['REQUEST_METHOD'] == 'OPTIONS')

js 对 select 中的 option 进行中文排序问题

从数据库中读取出 select 列表的 option 值是按照数据库中的顺序进行排列的,有时需要对 optiion 的中文按照字母序进行排序,这时需要注意的问题是  option 的 text 值 和 value 值要同时排序。这样提交 form 表单将数据提交到数据库时就能按照 正确的 value 值进行插入数据了。 下面是一个写好的  sortOptions(oSel) 对 option进行