 
 
 
 
 
   
O programa olá, evocado manualmente, depois de imprimir o seu TID, obtido pela evocação da função pvm_mytid(), lança uma cópia de um outro programa olá_meu recorrendo á função pvm_spawn(). O programa evoca uma nova função pvm_rec() e entra em modo de recepção bloqueante. A chegada da mensagem liberta-o do estado de espera, seguindo-se a obtenção do conteúdo da mensagem e da identificação do respectivo remetente, função pvm_upstr(). Finalmente desassocia-se da máquina virtual pvm_exit() depois de imprimir uma mensagem no écran.
O programa olá_meu começa por obter a identificação do programa que o lançou, pvm_parent() assim como o nome do computador hospedeiro. A informação obtida no passo anterior é seguidamente transmitida, usando uma sequência de três funções:
/* módulo Olá */
#include <stdio.h>
#include "pvm3.h"
main()
{	int cc, tid;
	char buf[100];
	printf("i'm t%x\n", pvm_mytid());
	cc = pvm_spawn("Olá_meu", (char**)0, 0, "", 1, &tid);
	if (cc == 1) {
		cc = pvm_recv(-1, -1);
		pvm_bufinfo(cc, (int*)0, (int*)0, &tid);
		pvm_upkstr(buf);
		printf("de tarefa%x: %s\n", tid, buf);
	} else
		printf("Não é possível iniciar Olá\_meu\n");
	pvm_exit();
	exit(0);}
/* módulo Olá_Meu */
#include "pvm3.h"
main()
{	int ptid;
	char buf[100];
	ptid = pvm_parent();
	strcpy(buf, "Olá , daqui o teu");
	gethostname(buf + strlen(buf), 64);
	pvm_initsend(PvmDataDefault);
	pvm_pkstr(buf);
	pvm_send(ptid, 1);
	pvm_exit();
	exit(0);
}
 
 
 
 
 
