[Debutant]Probleme file de message
Bonjour ,
perror me dit que msgrcv est mauvais : Invalid argument
Je ne comprends pas vraiment , j ai verifie les types des arguments ca m a l air bon ...
est ce que ca viendrait du fait qu il n y a aucun message ds la file de messages ? Si c est le cas comment peut on verifier que la file de message soit vide ou pas ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
struct message{
long type;
char mtexte[1];
int pid;
};
void clientarrive()
{
struct message client;
int taille_message = sizeof(client) - sizeof(long);
int pidclient;
close(pipe_client_accueil[ECRITURE]);
read(pipe_client_accueil[LECTURE],&pidclient,sizeof(int));
close(pipe_client_accueil[LECTURE]);
if (( msgrcv(msgid,&client,taille_message,0,0) ) == -1)
perror("erreur :\n");
printf("ne passe pas ici");
if (client.pid == 0){ // je voulais dire si aucun message
close(pipe_accueil_mecano[LECTURE]);
write(pipe_accueil_mecano[ECRITURE],&pidclient,sizeof(int));
close(pipe_accueil_mecano[ECRITURE]);
printf("%d",pidclient);
}
else {
client.pid = pidclient;
msgsnd(msgid,&client,taille_message,0);
}
return ;
} |
:roll: