適切な Linux/unix スタイルのアプリケーションを実行するには、何が最良の選択ですか (たとえば、afaik lsは getopt_long を使用しますが、たとえばffmpeg getopt_long_only を使用します)。どれをお勧めしますか?
乾杯、
適切な Linux/unix スタイルのアプリケーションを実行するには、何が最良の選択ですか (たとえば、afaik lsは getopt_long を使用しますが、たとえばffmpeg getopt_long_only を使用します)。どれをお勧めしますか?
乾杯、
私の意見では、通常、次のことは真実です。
プログラムが十分に大きくなると、正規のオプションと比較したときに何らかの意味を持つ短いオプションの組み合わせが最終的に使い果たされます。たとえば、-Z は、まったく異なる文字で始まる長いオプションと同じである可能性があります。その時点で、特にメンテナが 1 人である場合、オプションの解析コードはメンテナンスの頭痛の種になります。
その場合、いくつかの選択肢があります。
さまざまな場所に混ざると、本当に痛みを理解し始めます。
多くのオプションを使用するツールを作成する場合、通常、最初に行うことは、引数を解析するコードを作成することです。これは、プログラムの流れを計画するのに役立ち、アウトラインになります。その後、各オプションを機能させるだけです。
別の言い方をすれば、オプションが慢性的な痛みになるところまで来たら、それは通常、プログラムが計画を超えて急速に進化したことを示しています。
とにかく、私の長い答えを締めくくるには、通常、可能な限り compat getopt() の動作を維持することをお勧めします。ユーザーからの指示を取得するコードは、ビジネスを行うためのコストにすぎません。そのため、可能であれば、ユーザー エクスペリエンスを向上させるにはどうすればよいかを十分に考慮する必要があります。
「適切な gnu/linux スタイル」では、 getopt_long() を使用し、ほとんどのオプションに長いオプションを指定する必要があります (長いオプションのみの場合もあります)。ほとんどのコマンド ライン インターフェイスはこれに従います。
ない。argp_parse または libpopt のいずれかを使用します。
getopt_long_only を使用したことはありませんが、不明なフラグが単一の で始まる場合、長いオプションと短いオプションの両方を調べる必要があるため、さらにルックアップを行う必要があるようです-
。
'-' ('--' ではない) で始まるオプションが長いオプションと一致しないが、短いオプションと一致する場合、代わりに短いオプションとして解析されます。
--man getopt_long_only