我有一个程序使用getopt_get()
来解析命令行参数。
我的代码是这样的:
int opt;
int optionIndex;
static struct option longOptions[] = {
{"help", no_argument, NULL, 'h'},
{"test", no_argument, NULL, 't'},
{0, 0, 0, 0}
};
while ((opt = getopt_long(argc, argv, "ht", longOptions, &optionIndex)) != -1) {
switch (opt) {
case 'h':
help();
return 0;
break;
case 't':
init();
test();
return 0;
break;
case '?':
help();
return 1;
break;
default:
printf("default.\n");
}
当我将正确的命令行参数传递给程序时,它运行良好。 但是当错误的参数传递给程序时,它会打印出像这样烦人且多余的单词。
例如,我传递错误的论点' q'编程
$ ./program -q
./program: invalid option -- 'q'
Usage: -h -t
当有错误的参数时,我只想让它运行我的函数help()
而不打印任何单词。
./program: invalid option -- 'q'
如何阻止getopt_long
打印这个恼人的单词而只打印什么?
答案 0 :(得分:3)
阅读fine manual ...
如果
getopt()
无法识别选项字符,则会输出错误 发送给 stderr 的消息,将该字符存储在 optopt 中,然后返回'?'。 调用程序可以通过将 opterr 设置为来阻止错误消息 0
所以,在调用getopt_long
:
opterr = 0;