getopt_long

Muchas aplicaciones de Linux también aceptan argumentos que tienen más sentido que las opciones de carácter único. La biblioteca GNU contiene una versión de getopt denominada getopt_long que acepta los denominados argumentos largos que se introducen mediante un guión doble .


/* El siguiente programa ejemplo ilustra el uso de getopt_long ()
con la mayor parte de sus características. */

#include /* for printf */
#include /* for exit */
#include

int
main(int argc, char **argv)
{
int c;
int digit_optind = 0;

while (1) {
int this_option_optind = optind ? optind : 1;
int option_index = 0;
static struct option long_options[] = {
{“add”, required_argument, 0, 0 },
{“append”, no_argument, 0, 0 },
{“delete”, required_argument, 0, 0 },
{“verbose”, no_argument, 0, 0 },
{“create”, required_argument, 0, ‘c’},
{“file”, required_argument, 0, 0 },
{0, 0, 0, 0 }
};

c = getopt_long(argc, argv, “abc:d:012”,
long_options, &option_index);
if (c == -1)
break;

switch (c) {
case 0:
printf(“option %s”, long_options[option_index].name);
if (optarg)
printf(” with arg %s”, optarg);
printf(“\n”);
break;

case ‘0’:
case ‘1’:
case ‘2’:
if (digit_optind != 0 && digit_optind != this_option_optind)
printf(“digits occur in two different argv-elements.\n”);
digit_optind = this_option_optind;
printf(“option %c\n”, c);
break;

case ‘a’:
printf(“option a\n”);
break;

case ‘b’:
printf(“option b\n”);
break;

case ‘c’:
printf(“option c with value ‘%s’\n”, optarg);
break;

case ‘d’:
printf(“option d with value ‘%s’\n”, optarg);
break;

case ‘?’:
break;

default:
printf(“?? getopt returned character code 0%o ??\n”, c);
}
}

if (optind < argc) {
printf(“non-option ARGV-elements: “);
while (optind < argc)
printf(“%s “, argv[optind++]);
printf(“\n”);
}

exit(EXIT_SUCCESS);
}

atras

Anuncios

3 respuestas a getopt_long

  1. Dejo por aquí un ejemplo de getopt_long() que publiqué en mi web. Es parecido al del manual, pero un poco más completo, con argumento opcional, función de ayuda, control de argumentos y petición de un password de forma interactiva.
    http://totaki.com/poesiabinaria/2015/11/como-gestionar-los-parametros-de-un-programa-en-c-parte-2-parametros-largos/

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s