Baseado nos exercícios sobre fork e pipe, passados em sala de aula, desenvolver um programa em C/C++ que cria dois processos filhos e troca mensagens entre eles.
O processo (A) Recebe dois parâmetros numéricos na inicialização. Ele, então, cria dois processos filhos e envia o primeiro parâmetro para o primeiro filho (B) e o segundo parâmetro para o segundo filho (C), utilizando-se de pipes para a troca de mensagens. Quando os processos filhos retornam uma mensagem com os resultados, o pai então soma e apresenta o resultado da soma final na tela.
O processso (B) recebe uma mensagem (pipe) de (A) com um valor númérico e retorna para o mesmo o quadrado deste número, também através de mensagem. Antes de retornar a mensagem para (A) com o resultado da operação, este envia para (C) uma mensagem informando que terminou seu processamento e fica aguardando uma mensagem de confirmação de fim de processamento do proceso (C), para só então reponder à (A).
O processso (C) recebe como mensagem (pipe) um valor númérico e retorna o fatorial do mesmo, também por meio de mensagem. Antes de retornar o resultado para (A), este deve esperar uma mensagem de confirmação de término de processamento de (B) e, então, enviar para (B) uma mensagem confirmando o término do seu próprio processamento. Só então este responde para (A) uma mensagem com o resultado do fatorial.
Figura 1: fluxo das mensagens entre os processos.
[voltar]