Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Comunicación entre procesos

Estas en el tema de Comunicación entre procesos en el foro de C/C++ en Foros del Web. Hola qué tal, fíjense que me pidieron hacer un planificador de procesos, agan de cuenta que quiero hacer algo como esto: Código: //Creo un proceso ...
  #1 (permalink)  
Antiguo 09/02/2007, 10:17
 
Fecha de Ingreso: febrero-2007
Mensajes: 1
Antigüedad: 17 años, 2 meses
Puntos: 0
Comunicación entre procesos

Hola qué tal, fíjense que me pidieron hacer un planificador de procesos, agan de cuenta que quiero hacer algo como esto:

Código:
//Creo un proceso hijo
if(fork()==0)
{
  //hijo
  while(1)
     printf("Hola soy el hijo\n");
}
else
{
  //acá quiero pausar al proceso hijo y que después de 5 segundos continue
   //pero no se como :(
   //he leido algo de la función kill pero no le entiendo, me puede explicar?
   kill(pid_hijo,SEÑAL);  // ????
}
  #2 (permalink)  
Antiguo 09/02/2007, 17:33
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:17.