これまでは、getopt_long
を使用して、コマンドラインCプログラムのオプションを解析してきました。Cの引数の前後のコマンドラインオプションの処理
オプションでない引数にヒットしたときに、getopt_long
の解析を停止する方法はありますか?もしそうでなければ、C言語でこれを処理する最良の方法は何ですか?例を与えることを
、私はgitと同様にコマンドを処理するために好きで、それの後にコマンドの前に一般的な引数、およびコマンド固有の引数を持っていると思います:
git [general options] <command> [command options]
例:
-a
が
commit
コマンドに特異的であり、そして
-s
特定一方
git --bare commit -a
git -p --bare status -s
-p
と--bare
は、一般的なオプションであり、すべてのコマンドで使用することができstatus
コマンドに送信します。
getopt_long
を使用すると、最初にすべてのオプションを解析し、非オプション引数をそのまま処理します。私は理想的には、非オプション(つまりコマンド)を打ち、残りの引数をコマンド固有のオプションパーサーに渡すと、解析を停止したいと考えています。
+1。これはLinuxプログラマーズ・マニュアル、つまりLinuxのマンページには表示されていますが、「権限を持った」[Glibcのマニュアル](http://www.gnu.org/s/libc/manual/html_node/Getopt-Long- Options.html#Getopt-Long-Options)。 –
ありがとう、それは完全に動作します。私はgetopt_longのドキュメントであまりにも長く見つめすぎていて、 'man getopt'では十分ではありませんでした! –