Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/12/2010, 06:40
Avatar de mikeW
mikeW
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 1
Comunicarse con proceso

Hola, tengo unas dudas con la comunicación de procesos vereis estoy intentado que primero hable el padre y a continuación despierte a su segundo hijo y hable el, pero no me funciona. A ver si me podeis hechar una manita. Gracias!

Código:
#include <stdio.h>
#include <signal.h>

void hijo1();
void hijo2();
void padrehijo1();
void padrehijo2();
void error();


int main(int argc, char **argv[]) {

	int pidhijo1;

	pidhijo1=getpid();

	pidhijo1=fork();

	switch(pidhijo1) {
		case 0:	hijo1(); break;
		case -1: error(); break;
		default: padrehijo1();
	}
}

void hijo1() {
	/*printf("Soy el hijo 1 %d, y mi padre es %d\n",getpid(),getppid());*/
}

void error() {
	printf("Error al crear el hijo\n");
}

void padrehijo1() {
	int pidhijo2;

	pidhijo2=getpid();

	pidhijo2=fork();

	switch(pidhijo2) {
		case 0: hijo2(); break;
		case -1: error(); break;
		default: padrehijo2();
	}
}

void hijo2() {
	int piiid;
	piiid=getpid();
	pause();
	/*printf("Soy el hijo 2 %d, y mi padre es %d\n",getpid(),getppid());*/
}

void padrehijo2(int piiid) {
	int status, wpid1,wpid2;

	status=wait(wpid1);
	status=wait(wpid2);
	kill(piiid,SIGUSR1);
	printf("Soy el padre!, y ahora va a hablar mi segundo hijo\n");
	
	/*printf("Soy el padre %d, y mi padre es la shell con PID: %d\n",getpid(),getppid());*/
}