Bonsoir,
voila je fais un test sur les files de messages : j'envoie un hello sur la file et je le récupère puis je l'affiche.

Voici le code :
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
40
41
42
43
 
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/msg.h>
#include <errno.h>
#include <string.h>
#define CLE 456
 
int main (void){
	struct mybuf{
	long mtype;
	char mtext[100];
	}
	msgp;
 
	struct mybufReception{
	long mtype;
	char mtext[100];
	}
	msgpReception;
 
 
	int msqid ; /* identificateur de la file de message */
	char *path = "projet_cli_serv";
	key_t idClef=ftok (path, (key_t) CLE);
	msqid = msgget(idClef, 666|IPC_CREAT);
	if( (msqid==-1)){
		perror("file deja cree");
	}
	printf (" identificateur de la file : %d\n", msqid);
	printf ("clé de l'ensemble : %d\n", idClef); 
 
	strcpy(msgp.mtext, "helloworld");
	msgp.mtype=1;
	printf("voici %s\n", msgp.mtext);
	msgsnd(msqid, &msgp, sizeof(long)+sizeof(msgp.mtext), 0);
 
	msgrcv(msqid, &msgpReception, 254, 1, 0);
	printf("\nvoici ce que je viens de retirer de la file : %s....\n", msgpReception.mtext);
	msgctl(msqid, IPC_RMID, NULL); 
	return 0;
}
et voici l'execution un peu bizarre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
identificateur de la file : 1441792
 identificateur de la file 2 : -1
clé de l'ensemble : -1
voici helloworld
 
voici ce que je viens de retirer de la file : (�L....
Il m'affiche pas hello world mais un point d'interrogation bizarre... Les chiffres du code sont ça �L... un point d'interrogation sur un carré noir...

J'ai fait le même test avec un int 10 au début et il me retourne un int incohérent 123432344...

Compilation avec gcc -Wall -ansi -o test test.c.
Avez vous une idée ?

Merci par avance,
Tid.