El Gremio Digital

Un blog para compartir tecnologias informaticas

Programa Lanzar que utiliza el posix

Este programa toma un archivo de texto que contiene una serie de ordenes y las ejecuta en la consola utilizando procesos hijo para dicha tarea.

una vez finalizado y compilado el programa al ejecutar lo siguiente en la consola:
./lanzar ordenes.txt

se leerán cada una de las instrucciones(incluyendo parametros) contenidas en el archivo ordenes.txt, luego se ejecutarán con distinto proceso cada una, por lo que se mostrará que los resultados en la consola se intercalan pues se ejecutan simultáneamente, utilizando la orden FORK para ello.

coloco a continuación el codigo fuente paso por paso:

LANZAR1 Primer paso para la realización del ejemplo, en este ejemplo unicamente definimos el formato de llamada al método MAIN, si no recibe los parámetros adecuados mostramos indicaciones.
CÓDIGO: SELECCIONAR TODO
/*
*
* EJEMPLO LANZAR PRIMERA PARTE
* EN ESTE MOMENTO SOLO VERIFICAMOS QUE LANZAR1 SE INVOQUE
* PASANDO COMO PARAMETRO UN ARCHIVO CASO CONTRARIO MUESTRA
* INDICACIONES
*/


#include
#include
#include
#include
#include


#define MAX_ARGS 64
#define LONG_MAX_ARG 16
#define LONG_MAX_LINEA 80
#define ESPACIOBLANCO " .,\t\n"


int main(int argc, char *argv[])
{
if(argc!=2)
{
fprintf(stderr,"\n debe usarse asi: lanzar NOMBRE_ARCHIVO_CON_ORDENES \n");
return 0;
}

printf("\n primer parametro: %s \n",argv[0]);
printf("\n segundo parametro: %s \n",argv[1]);

return 0;
}





LANZAR2 ahora complicamos un poco más las cosas, pues tomamos el segundo parámetro (el nombre del archivo) y cargamos en memoria dicho archivo para recorrer cada una de las líneas de texto que el tal contenga.
CÓDIGO: SELECCIONAR TODO
/*
*
* EJEMPLO LANZAR PRIMERA PARTE
* EN ESTE MOMENTO SOLO VERIFICAMOS QUE LANZAR2 SE INVOQUE
* PASANDO COMO PARAMETRO UN ARCHIVO, LUEGO SE BUSCARÁ DICHO
* ARCHIVO Y SE MOSTRARÁ EN PANTALLA LAS ORDENES LEIDAS
*
*/


#include
#include
#include
#include
#include


#define MAX_ARGS 64
#define LONG_MAX_ARG 16
#define LONG_MAX_LINEA 80
#define ESPACIOBLANCO " .,\t\n"

//variables a necesitar
FILE *fid;
char lineaOrdenes[LONG_MAX_LINEA];

int main(int argc, char *argv[])
{
if(argc!=2)
{
fprintf(stderr,"\n debe usarse asi: lanzar NOMBRE_ARCHIVO_CON_ORDENES \n");
return 0;
}

//abrir el archivo de ordenes
fid=fopen(argv[1],"r");

while(fgets(lineaOrdenes,LONG_MAX_LINEA,fid)!=NULL)
{

fprintf(stderr,lineaOrdenes);

}


return 0;
}

0 comentarios:

Publicar un comentario

Páginas vistas

free counters
Con la tecnología de Blogger.

Seguidores

Mi lista de blogs