[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....
More information about the eSlack mailing list