/* Program hello.c */ #include <stdio.h> #include "pvm3.h" main() { int cc[10], tid[10],i; char buf[10][100]; printf("i'm t%x\n", pvm_mytid()); for ( i=0; i<=9; i++ ){ cc[i] = pvm_spawn("hello_other", (char**)0, 0, "", 1, &tid[i]); if (cc[i] == 1) { cc[i] = pvm_recv(-1, -1); pvm_bufinfo(cc[i], (int*)0, (int*)0, &tid[i]); pvm_upkstr(buf[i]); printf("from t%x: %s\n", tid[i], buf[i]); } else printf("can't start hello_other\n"); } pvm_exit(); exit(0); }
Das Slave-Programm hello_other.c wird vom obigen Masterprogramm gestartet. Seine erste Handlung ist das Abfragen der Tid des Masterprozesses, die es via pvm_parent() erfährt. Danach fragt es den Hostnamen des Clients ab, auf dem es läuft, und überträgt ihn nach dem initialisieren des ``Send Buffers'' mit pvm_initsend() per pvm_send() zum Master. pvm_pkstr() platzierte den String im Sendepuffer.
/* Slave-Program hello_other.c */ #include "pvm3.h" main() { int ptid; char buf[100]; ptid = pvm_parent(); strcpy(buf, "hello, world from "); gethostname(buf + strlen(buf), 64); pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(ptid, 1); pvm_exit(); exit(0); }