4

到目前为止,我一直在使用getopt_long解析命令行 C 程序的选项。

有没有办法getopt_long在遇到非选项参数时停止解析?如果不是,那么在 C 中处理这个问题的最佳方法是什么?

举个例子,我想以与git类似的方式处理命令,并在命令之前有一般参数,在命令之后有特定于命令的参数:

git [general options] <command> [command options]

例如:

git --bare commit -a
git -p --bare status -s

-pand--bare是通用选项,可以与所有命令一起使用,而-a特定于commit命令,并且-s特定于status命令。

Usinggetopt_long将首先尝试解析所有选项,然后将非选项参数留待处理。理想情况下,我希望在遇到非选项(即命令)后停止解析,然后将剩余的参数传递给特定于命令的选项解析器。

4

1 回答 1

6

GNU Getopt 手册说:

POSIX 要求以下行为: 第一个非选项停止选项处理。通过设置环境变量 POSIXLY_CORRECT 或以加号 ('+') 开始选项参数字符串来选择此模式。

于 2011-08-15T15:37:29.100 回答