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)
... 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
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 ();
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
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 ();
Quelqu'un aurait-il une solution ? C'est surement une erreur de ma part... enfin je suppose...
[/code]
Partager