Ejecucion de procesos

Páginas: 9 (2002 palabras) Publicado: 3 de abril de 2013
Ejecución de procesos
La función main y los argumentos
Habitualmente, cuando se lanza un programa a ejecución desde el shell, se le añaden parámetros o argumentos para definir exactamente qué queremos de él. Por ejemplo:
vi pepe.txt
ls -l /usr/include
cp pepe.c ../pipo.c
En el primer caso se invoca al editor vi especificándose que se desea trabajar con el fichero "pepe.txt". El fichero esun parámetro pasado al shell. El segundo caso es una llamada al programa ls que incorpora dos parámetros, como ocurre en el último ejemplo.
¿Qué son los parámetros o argumentos? En principio, puede afirmarse que son conjuntos de caracteres separados por blancos (espacios o tabuladores). Ahora bien, no se consideran parámetros los redireccionamientos, y caracteres como el ampersand "&" o el puntoy coma ";" actúan de separadores (en general, eso ocurre con todos los caracteres que tengan un significado para el intérprete de órdenes).
Ejemplo:En la orden
ls -l /usr/include & >pepe.txt
los parámetros son "ls", "-l" y "/usr/include" ('&' y la redirección no cuentan).
Cada programa recibe los parámetros a través de su punto de entrada, que en el caso del lenguaje C es la función main. Elformato mínimo que acepta esta función en UNIX es
main ( int argc, char* argv[] );
donde argc expresa cuántos parámetros se han reconocido, y argv es un vector de cadenas de caracteres que precisamente contienen los parámetros, siendo argv[i] el parámetro i.
Los parámetros se empiezan a numerar en 0. El parámetro 0 es el nombre del programa invocado tal y como se pasó en la línea de órdenes. Enel ejemplo de vi pepe.txt, los valores de argc y argv serían
argc = 2
argv[0] = "vi"
argv[1] = "pepe.txt"
Funciones para ejecución de programas
La función system()
La forma más sencilla de invocar una orden UNIX desde un programa en C es mediante la función system, que toma como único parámetro la orden que quieren ejecutar. Reconoce redirecciones, expresiones regulares, conductos (pipes),etc. Por ejemplo, la línea
system("ls -l /usr/include/*.h >pepe.txt")
ejecuta la cadena pasada como parámetro tal y como si la hubiéramos tecleado desde la consola. La función system se limita a lanzar un shell hijo pasándole como parámetro de entrada la cadena suministrada en la función.
La forma de más bajo nivel para ejecutar una orden consiste en lanzar a ejecución el programa deseadomediante alguna de las llamadas al sistema que empiezan por exec. Existen varias modalidades que difieren en la forma de pasar los parámetros al programa (aunque realmente se trata de una sola llamada al sistema UNIX).
Las llamadas exec...
El sistema operativo UNIX ofrece una llamada al sistema llamada 'exec' para lanzar a ejecución un programa, almacenado en forma de fichero. Aunque en el fondosólo existe una llamada, las bibliotecas estándares del C disponen de varias funciones, todas comenzando por 'exec' que se diferencian en la manera en que se pasan parámetros al programa.
La versión típica cuando se conoce a priori el número de argumentos que se van a entregar al programa se denomina execl. Su sintaxis es
int execl ( char* fichero, char* arg0, char* arg1, ... , 0 );
Es decir, elnombre del fichero y luego todos los argumentos consecutivamente, terminando con un puntero nulo (vale con un cero). Sirva este ejemplo:
Para ejecutar
/bin/ls -l /usr/include
escribiríamos
execl ( "/bin/ls", "ls", "-l", "/usr/include", 0 );
Obsérvese que el primer argumento coincide con el nombre del programa.
En caso de desconocer con anticipación el número de argumentos, habrá que emplearla función execv, que tiene este prototipo:
execv ( char* fichero, char* argv [] );
El parámetro argv es una tira de cadenas que representan los argumentos del programa lanzado, siendo la última cadena un nulo (un cero). El ejemplo anterior se resolvería así:
char* tira [] = { "ls", "-l", "/usr/include", 0 };
...
execv ( "/bin/ls", tira );
En los anteriores ejemplos se ha escrito el nombre...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • La ejecución del proceso docente educativo
  • Ejecución Del Proceso De Investigación
  • La ejecucion & el control del proceso técnico
  • proceso y ejecucion de desarrollo 8
  • Ejecucion del proceso gerencial
  • PROCESO DE EJECUCION DEL PROYECTO DE EXTENSIÓ
  • Proceso de ejecución de una auditoria externa
  • Proceso administratico ejecucion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS