[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor] Hola. Aqui va algo de ayuda
On Wed, 5 May 1999, Jhon Jairo wrote:
> 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?
El crear un pipe (tuberia) es independiente de crear un proceso
hijo a traves de un fork. Para que un pipe funcione debe ser abierta en
sus dos extremos, y la pueden abrir programas que no tengan ningun
'parentesco'.
luego de un fork (que por lo general se utiliza para ejecutar
otro programa a traves de las instrucciones exec) es recomendable hacer lo
siguiente:
id = fork();
if(id==0)
{
/* Esto es el proceso hijo */
}else
{
/* Este es el proceso padre*/
}
Quien se ejecuta primero? eso es dificil de decir, puede ser el
padre o el hijo, depende del sistema
> 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...
Esto no es necesariamente cierto.
> 2. Que significar que childpid sea igual a cero? o diferente de cero?
si id == 0 estas en el proceso hijo, si id != 0 significa que
estas en el proceso padre y el 'id' que tienes es justo el 'id' del hijo
> 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)
Depende en que estas programando: directamente en X11, Lesstif,
Tcl/tk. Puedes hacer un 'apropos mouse' en la linea de comando y lo que
buscas es 'mouse_setposition' aunque no te recomiendo utilizarlo. Tambien
puedes revisar XF86MiscSetMouseSettings, pero la pregunta seria para que
necesitas mover el cursor a una posicion en particular? Acaso quieres
crear alguna interface diferente de la del raton para mover el cursor, en
ese caso seria recomendable que le des una ojeada a los drivers para mouse
(/usr/src/linux/drivers/char/)
Suerte.
Paul
> 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);
> }
> }
>
>
>
> -----------------------------------------------------------------
> Mensaje enviado a traves de la lista: <linux-plug en linuxperu org>
> -----------------------------------------------------------------
>