[Comm] segfault with getopt_long
Alexey Morsov
=?iso-8859-1?q?samurai_=CE=C1_ricom=2Eru?=
Пн Мар 14 11:18:06 MSK 2005
Привет,
пишу проггу на Си. Для обработки опций запуска использую <getopt.h>
и функцию getopt_long...
Все работает, НО! если дать неверную опцию в коротком виде (-e) то как
и положенно выдается invalid option
А если дать неверную опцию в длинном виде (--eeee) то вылетает segfault
Из-за чего может быть такое?
======== Лист ==========
static struct option long_options[] = {
{"start", 0, 0, 0},
{"stop", 0, 0, 0},
{"config", 1, 0, 0},
{"log", 1, 0, 0},
{"help", 0, 0, 0}
};
int main(int argc, char **argv)
{
FILE *flog, *fpid;
pid_t pid;
struct passwd *pwd;
char ver[6];
int c, option_index=0;
sscanf(VERSION, "%*[$]%*s %[0-9.] %*[$]", ver);
printf("trafficd %s (c) Morsov, 2005. Distributed under GPL
license\n\n", ver);
c = getopt_long(argc, argv, "dsc:l:h", long_options, &option_index);
if (c == -1) {
print_help();
exit(0);
}
switch (c) {
case 0:
printf ("option %s", long_options[option_index].name);
if (optarg)
printf (" with arg %s", optarg);
printf ("\n");
exit(0);
case 'd':
printf("option d\n");
exit(0);
case 's':
printf("option s\n");
exit(0);
case 'c':
printf("option c with arg = '%s'\n", optarg);
exit(0);
case 'l':
printf("optarg l with arg = '%s'\n", optarg);
exit(0);
case 'h':
print_help();
exit(0);
}
return(0);
}
========================
--
Всего наилучшего,
Системный Администратор ЗАО "ИК "РИКОМ-ТРАСТ"
Алексей Морсов
ICQ: 196766290
Jabber: Samurai на jabber.pibhe.com
http://www.ricom.ru
http://www.fondmarket.ru
Подробная информация о списке рассылки community