influisce parecchio, soprattutto se stiamo parlando di interfacciare linguaggi diversi.
Ad esempio, in un sistema Unix potrei pensare un sistema in cui uno dei due programmi chiede al SO una zona di shared memory e poi passa all'altro la chiave per accedervi.
Vediamo una soluzione per DOS, ovvero con Turbo Pascal e Turbo C
codice:
// questo è il chiamante (CHIAMANT.C -> CHIAMANT.EXE)
#include <process.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
if (argc > 2) {
int r = spawnl(P_WAIT, "CHIAMATO.EXE", "CHIAMATO.EXE", argv[1], argv[2], NULL);
printf ("Risultato: %i\n", r);
} else printf ("Uso: CHIAMANTE int int\n");
return 0;
}
// questo è il chiamato (CHIAMATO.PAS -> CHIAMATO.EXE)
uses DOS;
var c, t1, t2, code: integer;
begin
c := ParamCount;
if c < 2 then begin
writeln('Errore: numero parametri insufficiente.');
halt(0);
end;
val(ParamStr(1), t1, code);
writeln ('t1=',t1);
val(ParamStr(2), t2, code);
writeln ('t2=',t2);
t1 := t1 + t2;
halt (t1);
end.
In questo caso il chiamante richiede un servizio (la somma di due numeri) al chiamato, passando i valori su cui operare come argomenti al programma chiamato, che a sua volta restituisce il risultato come exit code.
Risponde alle tue esigenze?
Claudio