cobbleguard
Messages postés6Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention20 avril 2006
-
13 avril 2005 à 17:19
cobbleguard
Messages postés6Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention20 avril 2006
-
14 avril 2005 à 09:14
Salut,
J'ai 3 processus indépendants qui communiquent.
PS1 reçoit des valeurs saisies au clavier, les met dans une structure et les envoie au PS2 via un tube nommé (pas de probleme)
PS2 recoit les donnees du PS1 par le tube et les envoie dans une memoire partagée (j'ai eu des prob de compilation mais je pense que c'est resolu). CC me mettait une erreur de casting entre un pointeur caddr_t et ma structure (j'ai aussi essaye avec un char a la place de la structure-->pas de prob). J'ai modifie le code, plus d'erreur mais ne sais pas verifier a cause du PS3.
Le PS3 est une supervision qui lit ce qui se trouve en memoire partagee, et la je me retrouve avec la meme erreur de casting :-(
Je coince un peut la dessus et je ne sais pas avancer dans mon develloppement. Une idée???
code du PS2
int ret_val ;
struct transport
{
int actuel ;
int dest ;
int NB_pass;
};
/*___________________________________DECLARATIONS POUR MEMOIRE PARTAGEE GLOBLALE_____*/
int shm_etage1;
int shm_etage2;
caddr_t shm_ptr1;
caddr_t shm_ptr2;
main (int argc, char *argv[])
{
printf("\n\t\tPROGRAMME PRINCIPAL");
int lire;
char lettre = 'A';
int i;
cobbleguard
Messages postés6Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention20 avril 2006 13 avril 2005 à 22:18
salut garslouche,
ta solution passe bien la compilation merci
Y a juste que ca me met une erreur a l'execution (segmentation fault (core dumped)) faut que je planche la dessus.
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 14 avril 2005 à 08:49
Le seg fault vient certainement d'un accès à une émoire qui n'est pas réservée à ton processus (c'est-à-dire justement ce pourquoi la shared memory est faite...). Je ne connais pas les fonctions de la shared memory POSIX et je ne sais donc pas m'en servir; je vais avoir du mal à t'aider davantage.
Ceci-dit il me semble que c'est dans l'utilisation de la mémoire partagée que le problème se trouve.
Je te conseille de passer tout ça au déboggeur pour voir où ça ne va plus.
Bonne prog
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac
cobbleguard
Messages postés6Date d'inscriptionmercredi 13 avril 2005StatutMembreDernière intervention20 avril 2006 14 avril 2005 à 09:14
Merci quand meme, tu m'as envoye dans une bonne direction, je crois que le prob viens d'une mauvaie initialisation du pointeur de ma memoire, mais j'ai plus de chance de m'en tirer avec ça plutot que les opérations de cast (j'ai surmement du m'endormir pendant ce cours ;-)). Enfin tu m'as permis d'avancer, des que j'ai la solution je posterai le code
merci