Problem mit Message Queue
-
Ich versuche gerade eine MQ zu erstellen. Allerdings scheitert mein Programm ständig an msgrcv(). Denn ich bekomme hier jedes mal den Rückgabewert -1 raus.
Woran kann das liegen?
msgget() ist dagegen bei jedem Versuch erfolgreich und liefert mir den Wert 0.typedef struct myS{ int i; } MY_S; int main(){ MY_S myS; myS.i = 10; int mkey; if(mkey=msgget((key_t)100001,0666|IPC_CREAT|IPC_EXCL)==-1){ printf("Fehler beim erstellen der MQ!\n"); return -1; } printf("Key in main: %d\n",mkey); msgsnd(mkey,&myS,sizeof(MY_S),0); MY_S myS2; if(msgrcv(mkey,&myS2,sizeof(MY_S),0,0) == -1){ printf("Fehler beim Empfangen der MSG!\n"); } else{ printf("\nNachricht: %d\n",myS2.i); } return 0; }
-
Lass dir mal die Fehlermeldung ausgeben (einfach mit man: perror)
if(msgrcv(mkey,&myS2,sizeof(MY_S),0,0) == -1){ perror("msgrcv"); }
Dann findest du vielleicht eher raus, was das Problem ist.
-
Ich habs gerade auf einem anderen PC probiert und hier funktioniert das. Komisch. Ich lass mir dann morgen auf dem anderen System den Fehler rausgeben.
-
Nachtrag: Der Fehler ist "msgrcv: Identifier removed"