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"


Anmelden zum Antworten