sinais unix

1. sinais unix

camilo
camiloavancini

(usa Outra)

Enviado em 25/09/2010 - 19:10h

Estou implementando um programa de “ping-pong” onde existem dois processos que ficam se
comunicando de forma periódica. Para comunicação, os processos empregam o mecanismo de sinais. Um processo exibe no
console “<pid>: ping” ao receber um sinal, responde (enviando um sinal), e o outro processo que
recebe a resposta, exibe “<pid>: pong”. Deve haver um atraso (parametrizável) entre cada par
ping-pong. tai meu codigo ele ta imprimindo duas vezes o ping por causa do fork que fiz se alguem tiver alguma ideia prta me ajudar.

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>


int PID1, PID2;

void imprimePing(int sinal)
{
printf("%d : PING\n", PID1);

}

void imprimePong(int sinal)
{
printf("%d : PONG\n", PID2);

}

main()
{


signal(SIGUSR1,imprimePing);
signal(SIGUSR2,imprimePong);

PID1 = getpid();
PID2 = fork();

while(1)
{
/*if(kill(PID1,SIGINT) > 0)
{
printf("Processo %d morrendo", PID1);
}
else if (kill(PID2,SIGINT) > 0)
{
printf("Processo %d morrendo", PID2);
}*/

kill(PID2,SIGUSR1);
kill(PID1,SIGUSR2);
sleep(3);
}

}


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts