Ir para conteúdo
Fórum Script Brasil

ManoelUFSC

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre ManoelUFSC

  • Data de Nascimento 13/07/1987

Contatos

  • MSN
    hamarvelous@hotmail.com

Perfil

  • Gender
    Male

ManoelUFSC's Achievements

0

Reputação

  1. eu tenho que fazer o seguinte: Implementar uma aplicação, em Unix ou Windows, que crie no mínimo 3 processos, para realizar uma tarefa onde haja cooperação e sincronização entre os processos que realizam a tarefa. Daí eu falei com uns amigos e cheguei no código abaixo, mas ainda faltam coisas a fazer, basicamente é o seguinte, o processo pai tem que gerar tres processos filhos e cooperar com eles (não é pra gerar netos), eu falei com o professor e ele disse que o que eu pensei está certo, por exemplo, eu peço pro processo filho 1 gerar um número e gravar em um arquivo (pode ser na memória tambem), o processo 2 ler o número fazer qqer coisa e gravar de novo, e o 3 tambem, o comando wait faz o pai esperar o filho acabar seu processamento... o fork() cria outro processo (cópia), eu até fui longe, so que não sei trabalhar com arquivo ou memória em c... podes me ajudar? Aliás o fork() retorna 0 ou outro número, 0 se for o filho... Valeu #include <sys/types.h> #include <unistd.h> main() { int i, status; int n = 10, m = 0; pid_t val, wval; if ( val = fork() ) { //Primeiro filho criado... ele executará o if se o val diferente 0 wval = wait(&status); // O pai pega o arquivo que o filho gerou e multiplica m por 20 por exemplo } else {//vem pra ca se for 0 ou seja o filho estiver executando for ( i=n; i >0; i-- ) m = m * i;//E agora gravaria no arquivo... } if ( val = fork() ) { //Segundo filho criado... ele executará o if se o val diferente 0 wval = wait(&status); //Deve pegar o arquivo que o primeiro filho escreveu e fazer algo, sei lá, multiplicar por 10 e //gravar de novo } else {//vem pra ca se for 0 ou seja o filho estiver executando //Filho 2 pega o arquivo e faz algo com M (m estará no arquivo, pois não temos acesso a M vari //vel, pois o unix copia o processo, portanto cada um tem suas variáveis } if ( val = fork() ) { //Terceiro filho criado... ele executará o if se o val diferente 0 wval = wait(&status); // Pai le o arquivo e faz alguma coisa //Aqui é legal dar um printf so pra mostrar valor final de M } else {//vem pra ca se for 0 ou seja o filho estiver executando //filho le arquivo e faz algo tambem } } Ficaria muito agradecido a quem me ajudar por favor. meu email é hamarvelous@hotmail.com Manoel
×
×
  • Criar Novo...