C-如何在Argp或Getopt中允许无法识别的选项?
我正在编写FUSE文件系统,它使用了一些参数。我想将所有未识别的选项传递给FUSE(因为它有自己的选项)。我可以使用C-如何在Argp或Getopt中允许无法识别的选项?,c,arguments,getopt,argp,C,Arguments,Getopt,Argp,我正在编写FUSE文件系统,它使用了一些参数。我想将所有未识别的选项传递给FUSE(因为它有自己的选项)。我可以使用argp或getopt来完成吗?现在两个都给我“未知选项”错误。Argp 发件人: ARGP\u无错误 不要将未知选项的错误消息打印到stderr;除非这个 设置标志时,ARGP\u PARSE\u ARGV0被忽略,因为argv[0]被用作 错误消息中的程序名。此标志意味着ARGP\u NO\u EXIT。 这是基于这样一种假设,即错误时无声退出是不好的 行为 Getopt 对于
argp
或getopt
来完成吗?现在两个都给我“未知选项”错误。Argp
发件人:
ARGP\u无错误
不要将未知选项的错误消息打印到stderr;除非这个
设置标志时,ARGP\u PARSE\u ARGV0
被忽略,因为argv[0]
被用作
错误消息中的程序名。此标志意味着ARGP\u NO\u EXIT
。
这是基于这样一种假设,即错误时无声退出是不好的
行为
Getopt
对于getopt
(以及getopt\u long
和getopt\u long\u only
),只需在调用函数之前将全局变量opterr
设置为0即可。或者,您可以使用一个带有前导:
字符的短选项字符串,如“:o:v”
处理-o输出文件和-v
(:
将在-o
缺少其参数时返回,如果找到选项字符串中不存在的任何选项,?
).解析(并将)未知选项传递给FUSE的困难在于,您不知道这些选项是否带有参数,因此您不知道如何继续准确解析。成束选项也可能存在问题(ls-ltr
在-ltr
中有一组成束的选项;它也可能被写入ls-l-t-r
,并具有相同的效果)。很大程度上取决于已经生效的规则。