標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 |
両方 |
#define _XOPEN_SOURCE_EXTENDED 1
#include <stdlib.h>
int getsubopt(char **optionp, char *const *tokens, char **valuep);
getsubopt() 関数は、初期に getopt() で解析されたフラグ引数内の サブオプション引数を解析します。これらのサブオプション引数は、コンマで区切られていなければならず、単一トークン、または等号記 号で区切られたトークン値のペアのいずれかで構成されます。コンマは、オプション・ストリング内のサブオプション引数を区切るため、サブオプション引数の一部、またはサブオプション引数の値であってはなりません。同様に、等号記号はトークンを値と分離するため、トークンに等号記号が含まれていてはなりません。
getsubopt() 関数は、オプション引数ストリングへのポインターの アドレス、可能なトークンのベクトル、および値ストリング・ポインターの アドレスを取ります。optionp のオプション引数ストリングに、サブオプション引数 が 1 つだけ設定されている場合、getsubopt() により optionp が更新され、そのストリングの最後の NULL が指されます。それ以外の場合は、コンマ区切り文字を NULL で置き換えることによりサブオプション引数が分離され、optionp が次のサブオプション引数の先頭を指すように更新 されます。サブオプション引数に関連した値がある場合は、getsubopt() により valuep が更新され、値の最初の文字が指されます。それ以外の場合は、valuep が NULL ポインターへ設定されます。
トークン・ベクトルは、ストリングへのポインターのシリーズとして編成さ れます。トークン・ベクトルの最後は、NULL ポインターで識別されます。
getsubopt() が戻るとき、valuep が NULL ポインターでない場合は、処理されたサブオプション引数は値をとります。呼び出し側のプログラムは、サブオプションの値の有無がエラーであるかを判別 するために、この情報を使用します。
さらに、getsubopt() がサブオプション引数と tokens 配列内 のトークンの突き合わせに失敗した場合は、これがエラーであるかどうか、または認識されないオプションを別のプログラムに渡すかどうかを、呼び出し元のプログラムが決定します。
getsubopt() 関数によりスレッド固有のデータが戻されるので、getsubopt() 関数をマルチスレッド・アプリケーションから安全に使用することができます。
正常に実行された場合、getsubopt() は、一致したトークン・ストリングの索引を戻します。
トークン・ストリングが一致しない場合、getsubopt() は -1 を戻します。
getsubopt() は errno 値を戻しません。