Tópicos especiais em desenvolvimento de sistemas
SISTEMA DE ENSINO PRESENCIAL CONECTADO
ANALISE E DESENVOLVIMENTO DE SISTEMAS
LUIZ RICARDO LIMA TENÓRIO
EDELIR TIAGO TAPARO
RAILANE BARBA FREIRE
trabalho de portifólio
Porto Velho
2010
luiz ricardo lima tenório
EDELIR TIAGO TAPARO
RAILANE BARBA FREIRE
trabalho de portifólio
Trabalho apresentado ao Curso Analise de Desenvolvimento de Sistemas da UNOPAR - Universidade Norte do Paraná, para a disciplina Tópicos Especiais em Desenvolvimento de Sistemas
Prof. Emerson André Fedechen
Porto Velho - RO
2010
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define READ 0
#define WRITE 1
#define TRUE 1
#define FALSE 0
int fd[2];
void criarProdutor(); void criarConsumidor(); void produtor(void); void consumidor(void);
int main() { int i, p, c; pipe(fd);
printf("De o numero de produtores: "); scanf("%d",&p); printf("De o número de consumidores: "); scanf("%d",&c);
for(i=0; i<p; i++) criarProdutor(); for(i=0; i<c; i++) criarConsumidor();
while(TRUE);
}
void criarProdutor() { if(fork() == 0) { produtor(); exit(0); }
}
void criarConsumidor() { if(fork() == 0) { consumidor(); exit(0); }
}
void produtor(void){ int item;
close(fd[READ]); while(TRUE){ //produzimos item em intervalo aleatório sleep(rand()%4); //Produção do item item = getpid(); printf("Produtor fabricou o item %d\n",item); write(fd[WRITE], &item, sizeof(int)); } close(fd[WRITE]);
}
void consumidor(void) { int item;
close(fd[WRITE]); while(TRUE){ //produzimos item em intervalo aleatório sleep(rand()%4); if(read(fd[READ], &item, sizeof(int)) != -1) { printf("Processo %d consumiu o item %d\n", getpid() ,item); } }