Bonjour,

Je suis en train de faire un projet en C avec la librairie PVM.

Mon processus est bien créé avec pvm_spawn (...).

Le problème est :
Quand j'envoie un "int" (packagé avec pvm_pkint) vers ce processus, ce dernier le dépacke bien et renvoie bien mon message de réponse (un int aussi)
Par contre quand je tente d'envoyer une chaine de caractère (packagé avec pvm_pkstr(char *str)), mon processus parent bloque sur le pvm_recv... Ce qui semble vouloir dire qu'il y a un problème au moment du dépackage de la chaine (peut-être) ou alors de réception du côté du processus "fils".

voici le code de la fonction d'envoie (partie principale)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
...
pvm_spawn ("/home/tlenoir/simulator/station", 0, PvmTaskDefault, 0, 1, &tab_station[i - 1].id_process);
pvm_initsend(PvmDataDefault);
if (pvm_pkstr (tab_station[i - 1].name) < 0) printf ("ERROR IN PACK\n");
if (pvm_send (tab_station[i - 1].id_process, 1) < 0) printf ("ERROR IN SEND\n");
 
printf ("wait for answer\n");
pvm_recv (-1, 1);
pvm_upkint (&b, 1, 1);
 
printf ("STATION: %d\n", b);
 
pvm_exit ();
... et celui de la fonction de reception (chez le processus fils)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
pvm_recv (-1, 1);
pvm_upkstr (name);
 
idparent = pvm_parent ();
 
pvm_initsend(PvmDataDefault);
pvm_pkint (&id, 1, 1);
pvm_send (idparent, 1);
pvm_exit ();
La chaine de caractère est bonne (j'ai vérifié... même avec une chaine en constante), avant d'avoir une proposition dans ce genre

Quelqu'un aurait-il une solution ? C'est surement une erreur de ma part ... enfin je suppose... [/code]