| 総合手引 | セクション 3 | English | オプション |
#include <unistd.h>extern char *suboptarg;
引数 optionp は、文字列へのポインタを指すポインタです。 引数 tokens は、文字列へのポインタを持つ、 NULL で終わる配列を指すポインタです。
getsubopt() 関数は、文字列の最初のトークンに適合する文字列を参照する tokens 配列中のポインタの、0 始まりのオフセットを返します。 文字列にトークンが一切含まれない、または tokens 中に適合する文字列が含まれない場合には -1 を返します。
トークンの形式が ``name=value'' である場合、 valuep で参照される先は、 トークンの ``value'' の部分の先頭を指すように設定されます。
getsubopt() から戻った時、 optionp が文字列の次のトークンの先頭を指すように設定されます。 または、それ以上のトークンがない場合には、 文字列の終わりの null を指します。 外部変数 suboptarg は、現在のトークンの先頭を指すように設定されます。 トークンがなかった場合は、 NULL となります。 引数 valuep は、トークンの ``value'' の部分を示すように設定されます。 または、``value'' 部分がなかった場合は NULL となります。
char *tokens[] = {
#define ONE 0
"one",
#define TWO 1
"two",
NULL
};
amp;...
extern char *optarg, *suboptarg;
char *option, *value;
while ((ch = getopt(argc, argv, "ab:")) != -1) {
switch(ch) {
case 'a':
/* ``a'' オプションを処理 */
break;
case 'b':
option = optarg;
while (*option) {
switch(getsubopt(&option, tokens, &value)) {
case ONE:
/* ``one'' サブオプションを処理 */
break;
case TWO:
/* ``two'' サブオプションを処理 */
if (!value)
error("no value for two");
i = atoi(value);
break;
case -1:
if (suboptarg)
error("illegal sub option %s",
suboptarg);
else
error("missing sub option");
break;
}
break;
}
| GETSUBOPT (3) | June 9, 1993 |
| 総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
