[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [Linux-Plug] Programacion



	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>
> -----------------------------------------------------------------
> 




[Hilos de Discusión] [Fecha] [Tema] [Autor]