Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/02/2007, 17:33
Avatar de TolaWare
TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 19 años, 8 meses
Puntos: 24
Re: Comunicación entre procesos

¿Que sistema sistema operativo estas usando?
¿Algún derivado de UNIX?

Pregunto esto porque las funciones que usas son muy parecidas a las del entandar POSIX.

Si estas usando algún UNIX la cosa es mas o menos así.

Los procesos se identifica mediante un tipo llamado pid_t
Este tipo esta definido en la librería sys/types.h
Para crear un proceso hijo usamos la llamada fork() de la siguiente manera.

pid_t hijo;
hijo = fork();

Esa llamada crea una copia del proceso. El proceso padre continua en la siguiente linea al fork, y el hijo TAMBIÉN.

Bien, para poder averiguar cual es el pid (identificador) de un proceso, lo podemos hacer con la función getpid() de la siguiente manera:

pid_t padre = getpid();


Entonces podrías armar la estructura del programa de la siguiente manera

Código:
#include<sys/types.h>
#include<stdio.h>

int main() {

    pid_t padre;
    pid_t hijo;

    padre = getpid(); // acá guardamos el pid del padre
    hijo = fork(); // bifurcamos y guardamos el  pid del hijo

    if(getpid()==padre) {
       // acá deberías dormir al hijo
    }
    else {
        while(1) {
            printf("Hola, soy el hijo \n");
        }
    } 
}
El tema de dormir procesos es bastante mas complejo, te dejo un link para que le veas en forma detallada

http://atc1.aut.uah.es/~arqui/Trps/POSIX_de_tiempo_real.ppt