Argumentos de programa

Cuando un programa Linux o UNIX escrito en C se ejecuta, comienza con la función main. Para dichos programas, main es:

 Argumento_main
donde argc es un encuentro de los argumentos del programa y argv es una matriz de cadena de caracteres que representa a los propios argumentos. También podemos encontrar en otros programas en C para Linux que simplemente declaren main como main().

Esta opción también es válida, porque el tipo de retorno será, por defecto, int y los parámetros formales que no se usen en una función han de ser declarados. argc y argv siguen ahí, pero si no los declara, no podrá usarlos.

Siempre que el sistema operativo inicia un nuevo programa, los parámetros argc y argv se establecen y se transmiten a main. Dichos parámetros los suelen proporcionar otros programas, a menudo la shell que ha pedido que el sistema operativo inicie el nuevo programa. La shell adopta la línea de comando proporcionada, la divide en palabras individuales, y las usa para la matriz argv. Recuerde que una shell Linux suele ejecutar la expansión con comodines de los argumentos del nombre de archivo antes de que acepten los argumentos con comodines y a que ejecuten su propia expansión con comodines.

Por ejemplo, si proporcionamos a la shell el siguiente comando,

argumentoel programa MiPrograma comenzará en main con parámetros:

argumento_argvTenga en cuenta que el recuento de argumentos incluye el nombre del propio programa y la matriz argv contiene el nombre del programa como primer elemento, argv[0]. Como usamos comillas en el comando shell, el cuarto argumento está compuesto por una cadena de espacios.

argc_argvLos argumentos de la línea de comandos son útiles para transmitir información a los programas. Por ejemplo, podría usarlos en una aplicación de base de datos para transmitir el nombre de la base de datos que desea usar, lo cual le permitirá usar el mismo programa en más de una base de datos. Algunos programas de prestación también utiliza los argumentos de la línea de comandos para modificar su comportamiento o para configurar ciertas opciones. Normalmente, configurará los denominados indicadores o los intercambiadores usando argumentos de línea de comandos que contienen un guión. Por ejemplo, el programa sort adopta un intercambiador para invertir el orden normal:

sort_ejemploLas opciones de línea de comando son muy comunes y si se usa coherentemente le serán de gran ayuda a los usuarios de su programa. Antes, cada programa de prestaciones adoptaba su propio enfoque sobre las opciones de la línea de comando, lo cual generaba cierta confusión. Por ejemplo, observe cómo adoptan estos comandos los parámetros: argumentosRecomendamos que en sus aplicaciones todos los intercambiadores de línea de comandos comiencen con un guión y que estén formados por una única letra o número. Si fuese necesario, las opciones que no adoptan más argumentos se pueden agrupar tras un solo guión.

De manera que los dos ejemplos ls mostrados arriba sí que cumplen las pautas de actuación. Cada opción debería ir seguida por cualquier valor necesario a modo de argumento independiente.

argumento_ls

El ejemplo dd rompe nuestra regla usando opciones multi-carácter que no comienzan con guiones.

argumento_ddEl ejemplo tar separa las opciones y sus valores por completo.

argumento_tarEs aconsejable añadir nombres de intercambio  más largos y con mayor significado a modo de alternativa para las versiones de caracteres únicos y usar un guión doble para distinguirlos. Podemos usar -h y --help como opciones para obtener ayuda.

argumento_7Otra pequeña debilidad de algunos programas es hacer que la opción +x (por ejemplo) ejecute la función contraria a -x. Podemos usar set -o xtrace para configurar el trazado de ejecución de la shell, y set +o xtrace para desactivarlo.

Como podemos imaginar, recordar el orden y el significado de todas estas opciones de programas es bastante difícil ya, sin tener que preocuparse de los formatos idiosincráticos. A menudo, la única opción es usar la opción -h (ayuda) o una página man si el programador la proporciona.  Tal como se mostrará durante el capítulo, getopt proporciona una sencilla solución para estos problemas. Pero por ahora sólo vamos a ocuparnos de la gestión de los argumentos del programa cuando son transmitidos.

A continuación presentamos el programa args.c, que examina sus propios argumentos:

args_listadoCuando ejecutemos este programa, mostrará únicamente sus argumentos y detectará la presencia de opciones. La intención es que el programa adopte un argumento de cadena y un argumento de nombre de archivo opcional introducido por una opción -f. También podemos definir otras opciones.

argumento_pruebaEl programa usa únicamente el cómputo de argumentos argc, para configurar un bucle que examine todos los argumentos del programa.

funciona_argc Detecta la presencia de opciones buscando un guión inicial.

args_2La especificación X/Open (disponible en: http://opengroup.org/) define un uso estándar para las opciones de línea de comando (Utility Sintax Guideline) así como una interfaz de programación estándar para proporcionar intercambiadores de línea de comandos en los programas C:

Funciones:

atras

Anuncios

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