Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

msgget - Nachrichten-Warteschlange ermitteln

&pagelevel(4)&pagelevel

Definition

#include <sys/msg.h>

int msgget(key_t key, int msgflg);

Beschreibung

msgget() liefert die Warteschlangenkennzahl, die key zugeordnet ist.

Warteschlangenkennzahl, zugehörige Warteschlange und Datenstruktur (siehe auch sys/msg.h) werden für key dann erzeugt, wenn eine der folgenden Bedingungen erfüllt ist:

  • key ist IPC_PRIVATE.

  • key besitzt noch keine zugeordnete Warteschlangenkennzahl und ( msgflg & IPC_CREAT) ist ungleich 0.

Bei der Erzeugung wird die der neuen Warteschlangenkennzahl zugeordnete Datenstruktur wie folgt initialisiert:

  • msg_perm.cuid, msg_perm.uid, msg_perm.cgid und msg_perm.gid werden gleich der effektiven Benutzer- bzw. Gruppennummer des aufrufenden Prozesses gesetzt.

  • Die niederwertigen 9 Bit von msg_perm.mode werden gleich den niederwertigen 9 Bit von msgflg gesetzt.

  • msg_qnum, msg_lspid, msg_lrpid, msg_stime und msg_rtime werden gleich 0 gesetzt.

  • msg_ctime wird gleich der aktuellen Uhrzeit gesetzt.

  • msg_qbytes wird gleich der durch das System festgelegten Grenze gesetzt.

Returnwert

nichtnegative ganze Zahl (Warteschlangenkennzahl)



bei Erfolg.

 

-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

msgget() schlägt fehl, wenn gilt: 

 

EACCES

Es existiert eine Warteschlangenkennzahl für das Argument key, aber die in den niederwertigsten 9 Bit von msgflg angegebenen Zugriffsrechte werden nicht erteilt (siehe auch Abschnitt "Interprozesskommunikation“).

 

EEXIST

Es existiert eine Warteschlangenkennzahl für das Argument key, aber der Wert von (( msgflg & IPC_CREAT) && ( msgflg & IPC_EXCL)) ist ungleich 0.

 

ENOENT

Es existiert keine Warteschlangenkennzahl für das Argument key und ( msgflg & IPC_CREAT) ist gleich 0.

 

ENOSPC

Es soll eine Warteschlangenkennzahl erzeugt werden, aber die durch das System festgelegte Grenze für die Maximalzahl der erlaubten Warteschlangenkennzahlen würde dadurch überschritten werden.

Hinweis

Das Kommittee des IEEE 1003.4-Standards entwickelt gerade eine alternative Schnittstelle für die Interprozeßkommunikation. Anwendungsprogrammierer, die Interprozeßkommunikation einsetzen, sollten die Anwendungen so konzipieren, daß Module, die derzeit beschriebene Funktionen für Interprozeßkommunikation benutzen, einfach geändert werden können. 

Siehe auch

msgctl(), msgrcv(), msgsnd(), sys/msg.h, Abschnitt "Interprozesskommunikation“.