#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <sys/wait.h>
#include <unistd.h>
#include <sys/sem.h>
#include <sys/msg.h>
#include <time.h>
struct msgbuf {
long mtype; /* type of message */
char mtext[1000]; /* user-define message */
};
int main(){
pid_t team,player;
int queue;
queue=msgget(IPC_PRIVATE,0600);
struct msgbuf buf1,buf2;
int cA,cB;
for(int i=0;i<1;i++){
team=fork();
switch(team){
case -1:
exit(-1);
case 0:
for(int j=0;j<1;j++){
player=fork();
switch(player){
case -1:
exit(-1);
case 0 :
printf("sono il figlio %d \n ",((i*5)+j));
sprintf(buf1.mtext,"%d",10);
buf1.mtype=1;
cA=msgsnd(queue,&buf1,1000,0);
exit(0);
}
}
exit(0);
default:
sleep(1);
// flag
}
}
sleep(1);
// code
if(msgrcv(queue,&buf2,1000,1,0)==-1){
perror("riceive ");
}
printf("%s\t%d\t%d\n",buf2.mtext,cA,cB);
// code
}
ce code essaie essentiellement de communiquer entre deux processus différents. qui peut m'aider, car les msgrcv ne reçoivent pas le msg du msgsnd et je ne comprends pas pourquoi .ce code n'est qu'un échantillon. j'essaye aussi de mettre le code où est le drapeau mais de toute façon je ne crois pas ce que je crois. des astuces?Argument invalide sur msgrcv dans c