2014-10-20 42 views
0

我正在实现一个命令行工具,我需要能够处理一堆选项。某些选项必须在完成后终止程序。例如,我有选项a,b和c。如果A和B后,他们的DONE终止,我给了命令我可以使用getopt按特定顺序处理选项吗?

./myprogram -bca [file] 

有没有办法让“一个”优先在这样getopt的使用情况()?

编辑:

我解决了这个运行的选项开关,如果选择了选项设置的标志。然后将所有标志发送到按顺序查看标志的函数。

+0

您可以根据您的程序提供了哪些参数来设置一些标志,然后按照任何令您满意的顺序处理这些标志。 – 2014-10-20 19:46:19

回答

1

处理getopt()读取的选项有两种主要方法。一种是在执行与选项相关的操作,getopt()在读取其余选项之前识别它;另一种是在进行任何处理之前阅读所有选项。 (程序并不经常实现混合解决方案;在解析参数时会执行某些选项,但其他选项仅会被记录下来,并且在处理参数后采取的操作)。

在您的情况中,似乎您需要解析所有在做任何处理之前的选项。如果-a-b在执行操作后终止程序,那么它们是相互排斥的选项,您应该将其诊断为错误地调用程序。您需要决定是否允许-c以及-a-b

很多时候,您需要配对才能一起工作,或者您需要知道在决定采取何种措施之前,是否已经指定了其中一个,另一个或两者。另一个要考虑的问题是如果在命令行上重复一个选项,这意味着什么。

1

没有办法让getopt自己处理这个。最简单的方法是创建一个标志位图,正如@tfahl所建议的那样。

+3

我不同意'不提供答案'评论。它确实提供了一个答案 - “不,没有办法让'getopt()'自己处理这个”。这也是一个正确的答案。 – 2014-10-30 17:47:42

相关问题