[eSlack] Tuberia con Nombre...

José Alexander Alvarez Castro jose_alexander80 at hotmail.com
Thu Aug 31 05:11:18 CEST 2006

Gracias por responder aqui pongo todo el codigo.

**************************************Este es el codigo 
cliente:*********************************
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <limits.h>
#include <time.h>

int main(void)
{
 char ruta[10];
 int pid;
 pid = fork();

 int num_bytes;   /*Numero de bytes leidos desde el FIFO*/
 int num_bytes2;
 int descriptor_archivo;  /*descriptor del FIFO*/
 int len;   /*numero de bytes escritos al fifo*/
 char buf[PIPE_BUF];  /*Garantizar escrituras atomicas*/
 mode_t modo = 0666;
 time_t puntero_de_reloj; /*para la llamado a time*/


/*obtener la direccion*/
 if(pid==0){
 printf("**********************************\n");
 printf("COMPRESOR DE ARCHIVOS CON FIFOS\n");
 printf("**********************************\n");
 printf("\n");
 printf("Archivos en carpeta...\n");
 printf("\n");
 printf("\n");


}

 printf("Archivo a Comprimir: ");
 scanf("%s",ruta);
 printf("%s",ruta);
 printf("\n");

 printf("\n");

/*Exhibir la identificacion de cada instancia (son mas de una) de este 
proceso*/

/*Abrir el FIFO para solo escritura*/

 if((descriptor_archivo = open("fifo1", O_WRONLY)) < 0) {
  perror("open");
  exit(EXIT_FAILURE);

 }

/*Generar algunos datos que se puedan escribir al FIFO*/
 while(1){
/*obtener la hora corriente*/
 time(&puntero_de_reloj);



/*crear la cadena a ser escrita al FIFO*/
 num_bytes = sprintf(buf/*, "%s"*/, ruta);

 execl("/bin/mv","mv",ruta,"/root/server", (char *)0);
/*utilizar (num_bytes + 1) por que sprintf no incluye en su conteo el cero 
binario de terminacion*/

 if((write(descriptor_archivo, buf, ruta, num_bytes + 1)) < 0) {
  perror("write");
//close(descriptor_archivo);
  exit(EXIT_FAILURE);
 }
 sleep(3); /*intervalo de tres segundos entre dos escrituras consecutivas al 
FIFO*/

 }
//close(descriptor_archivo);
 exit(EXIT_SUCCESS);
}

*************************************************************************************************

*******************************Este es el codigo 
Server:***********************************************

#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <limits.h>

int main(void)
{ char archivo[15];
 char ruta[10];
 int descriptor_archivo; /*descriptor del FIFO*/
 int num_bytes;  /*Numero de bytes leidos desde el FIFO*/
 int num_bytes2;
 int archivo_leer;
 char buf[PIPE_BUF];
 mode_t modo = 0666;

 if ((mkfifo("fifo1", modo)) < 0) {
  perror("mkfifo");
  exit(EXIT_FAILURE);
 }

/*abrir el FIFO para solo lectura*/

 if((descriptor_archivo = open("/root/mini/fifo1", O_RDONLY)) < 0) {
 perror("open");
 exit (EXIT_FAILURE);

 }
/*leer el FIFO y exhibir su salida de datos hasta encontrar EOF*/

    ((num_bytes = read(descriptor_archivo, buf, PIPE_BUF - 1, ruta)));
 printf("Archivo recibido para Comprimir, Favor revise carperta Servidor 
%s", buf);
 printf("\n Escriba el archivo a comprimir: ");
 scanf("%s",archivo);
 printf("%s",archivo);

 execl("/bin/gzip","gzip","-v",archivo,(char *)0);


 exit(EXIT_SUCCESS);

 }/*FIN de leer_archivo*/

*****************************************************************************************

Gracias de Antemano....

Google
 
Web lists.eslack.org
More information about the eSlack mailing list