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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ; }
Partager