
MMRH97
(usa Debian)
Enviado em 18/11/2016 - 15:56h
DÚVIDA: Boa tarde. Estou querendo fazer um programa que ao receber um número qualquer ele execute o processo pai recebendo número randômicos de 0 à 100.000, feito isso ele inicie 3 processos filhos e o primeiro que encontrar o número mostre ou diga que foi ele e mate o restante dos processos utilizando pipe(fd)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int fd[2];
char frase[50];
void mensagem (char filho[6], int numero){
int i;
char msg[50];
write (fd[1], filho, 7); /*escreve para o pai */
}
void main(int argc, char *argv[])
{
int num, qual, R;
printf("Digite um numero que sera encontrado: ");
scanf("%d", &num);
R = rand()%10000;
pipe(fd);
int i, a, b;
printf("MSG: Processo pai - PID %d, \n", getpid());
if (fork() == 0){ /* Filho */
printf("MSG: Criando o filho 1 PID %d, \n", getpid());
mensagem("Filho 1", i);
for(i = 0; i<10000; i++)
R = rand()%10000;
if(num == R)
printf("Filho 1 encontrou %d, \n", num);
if (fork() == 0){ /* Filho */
printf("MSG: Criando o filho 2 PID %d, \n", getpid());
mensagem("Filho 2", a);
for(a = 0; a<10000; a++)
R = rand()%10000;
if(num == R)
printf("Filho 2 encontrou %d, \n", num);
if (fork() == 0){ /* Filho */
printf("MSG: Criando o filho 3 PID %d, \n", getpid());
mensagem("Filho 3", b);
for(b = 0; b<10000; b++)
R = rand()%10000;
if(num == R)
printf("Filho 3 encontrou %d, \n", num);
}
}
}
}
/*else{
read(fd[0], frase, 50); /*Lê o filho */
// printf("MSG: %s acho o número %d, \n", frase, i);
//}