[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]hi, listas...
acabo de bajar el manual del programador de Linux y tengo ciertas
inquietudes con la programación de las pipes...
1. Al crear la tuberia se crea un proceso hijo para comunicarse, la
pregunta es: cuando comienza a ejecutarse el proceso hijo?, cuando el
padre cierra el extremo de escritura de la cañeria? o cuando el padre
empieza a leer en la cañeria?
estube poniendo mensajes para ver que es lo que hace y me parece que el
hijo empieza a ejecutarse cuando el padre empieza a leer en la
cañeria...
2. Que significar que childpid sea igual a cero? o diferente de cero?
3. Yo he programado en C bajo DOS y Windows, ahora quiero empezar bajo
UNIX para realizar mi proyecto de grado (eso espero), ¿No existe el
posicionamiento del cursor? ejemplo: gotoxy(x,y)
programa:
pipe.c
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main(void)
{
int fd[2], nbytes;
pid_t childpid;
char string[]="Hola a todos!\n";
char readbuffer[80];
pipe(fd);
printf("Antes de Crear Hijo\n");
if((childpid=fork())==-1)
{
perror("fork");
exit(1);
}
printf("Despues de crear hijo\n");
printf("antes del IF:%d\n",childpid);
if(childpid==0)
{
printf("entre childpid==0\n");
close(fd[0]);
write(fd[1],string, strlen(string));
printf("Antes de exit childpid:%d\n",childpid);
exit(0);
}
else
{
printf("Entre en el else\n");
close(fd[1]);
printf("dentro del Else:%d\n",childpid);
nbytes=read(fd[0], readbuffer, sizeof(readbuffer));
printf("Cerre la tuberia");
printf("Recibido string: %s\n", readbuffer);
}
}