引数の扱いにはGNUの拡張として、ハイフン2つ+複数文字(単語)の構成のコマンドラインオプションが使われることがある。いうものが定義されている。コマンドラインオプションの数が増えていくと一文字のバリエーションでは表現が難しくなり、使いにくいものになってしまう。そこで、ハイフン2つ+単語の構成のコマンドラインオプションを扱うための関数が用意されている。通常のオプション(「短い」オプション)に対して「長い」オプションを処理するための関数だ。getopt_long関数の利用manで調べると、定義は以下のようになっている。意味としても全くおなじになる。長いオプションだけしか扱えないのではなく、両方が扱えるようになっている。4つ目以降の引数が肝心の長いオプションを処理するために必要な引数である。長いオプションの定義を入れる。指定するのは一つ一つのオプションを定義した構造体の配列となる。この配列は配列長を渡す代わりに0終端を行う。指定した何番目のオプションに合致したかというインデックス値が格納される。以下の様な構造体になっている。このオプションが引数を持つかどうかの指定である。同様に、なし、必須、あってもなくてもよい、が定義されている。以下のように定義されている。これら定義値を利用して指定する。判定結果の格納先を指定する。代わりに指定された変数へ値が格納される。同じ戻り値が返るようにしたほうが良いと思う。判定結果として返す値を指定する。例によって、言葉で説明しても難しいので、実コードと実動作を通して説明していく。利用した、各引数に対して、以下の様な対応になる。単語に特に意味なはく、頭文字が合うように適当な単語を選んだだけなのでそこは目をつむってほしい。設定された要素があるのに注目。この項目で配列の末尾を表現している。実際に実行してみよう。(null)このように、長いオプションが短いオプションと同様に検出できる。他のオプションと区別できるだけの文字数が入力できていればよい。短いオプションと混在して指定することもできる。同じ処理によって判別された、短いオプションである。よって指定されたオプションを検出した場合だけである。指定した引数として検出されていると分かる。使って引数を判定するときは気をつけよう。どちらかが使用できる。(null)どちらでも同じ結果が得られる。いうハイフン一つのオプションもまず、長いオプションとして処理をしようとする。書いても、addオプションとして判定される。aオプション、続いてdオプション、dオプションの引数d、と解釈されてしまう。なく、長いオプションとして判断できなかった引数が、短い引数として判定される。いう細工を入れてみるのも楽しいかもしれない。挑戦してみてもらいたい。更新情報2018/07/28lsっぽいコマンドを作る13アップしました。2018/07/13lsっぽいコマンドを作る12アップしました。2017/01/04lsっぽいコマンドを作る11アップしました。2017/01/03lsっぽいコマンドを作る10アップしました。(https://commoncrawl.org/faq/)。