SEM_OPEN 3 C -Funktion

SEM_OPEN 3 C -Funktion
Ein angegebenes Semaphor und ein Thread sind mit der Methode sem_open () zugeordnet. Die IP, die durch das Argument an sem_open () bereitgestellt wird, könnte von der Methodik verwendet werden, um sich auf das Semaphor zu beziehen. Hier werden wir die Abdeckung der Sem_Open -Funktion mit der Ubuntu -Implementierung diskutieren.

Syntax der Sem_open 3 C -Funktion

# sem_open (const char *name, int oflag, unsigned long modus, unsigned int -Wert);

Beschreibung der Funktion sem_open ()

Ein Link wird zwischen einem definierten Semaphor und einem Framework unter Verwendung der Methode Sem_open () hergestellt. Der Ort wird durch die Verwendung der Funktion Sem_open () zusammen mit dem Semaphor -Term erhalten, mit dem sich das System auf das mit der angegebene Etikett entsprechende Semaphor beziehen kann. Bis das Semaphor erfolgreich von einer SEM -Close () -Funktion oder anderen Methoden des Execs beendet wird, kann es weiterhin von der Funktion verwendet werden. Die Funktion von SEM_OPEN () bestimmt, ob das Semaphor generiert oder nur zugänglich ist, abhängig vom OFLAG -Parameter. Die im Folgenden aufgeführten Flag -Elemente können im OFLAG -Parameter konfiguriert werden:

O_Creat Flag:

Wenn ein Semaphor noch nicht vorhanden wäre, wird es mit dieser Flagge festgelegt. O_Creat hat keinen Einfluss, wenn das Semaphor vorhanden und angegeben ist, außer dem, was in der O_EXCL erwähnt wird. Stattdessen wird ein gekennzeichnetes Semaphor gebildet, wenn wir die Funktion sem_open () verwenden. Die 3. und 4. Parameter für das O_Creat -Attribut sind Modi des Formatmodus T, dessen Inhalt und von Datentyp unsigned Integer.

Ein ungefährer Wert der Daten wird verwendet, um das Semaphor zu konstruieren. Semaphoren müssen die Anfangswerte haben, die größer oder gleichwertig mit dem SEM -Wert max sind. Die effiziente Benutzer -ID des Programms wird als eindeutige ID des Semaphors zugewiesen. Entweder die Computerstandard -ID oder die effiziente Gruppen -ID des Framework wird als Gruppen -ID des Semaphors bereitgestellt.

Abgesehen von denjenigen, die in der Dateiformat -Initialisierungsmaske des Systems konfiguriert sind, werden die Autorisierungsbytes des Semaphors dem Wert des Argumentmodus zugeordnet. Die Auswirkungen sind mehrdeutig, wenn die Elemente in einem Modus anstelle der Dateizugriffsflags bereitgestellt werden. Andere Methoden können mit dem Semaphor verknüpft werden, indem die Funktion sem_open () mit einem ähnlichen Wert des Titels aufgerufen wird. Danach wird der Semaphor -Name von der Funktion sem_open () einschließlich des O_Creat -Flags gebildet.

O_excl Flag:

Wenn der Semaphorentitel bereits vorhanden ist, lehnt Sem_open () ab, ob die O_EXCL und O_CREAT angegeben sind. In Bezug auf andere Methoden, die die Funktion sem_open () mit o_excl und o_creat definiert haben.

Das Ergebnis ist nicht definierbar, wenn O_EXCL und O_CREAT angegeben sind. Die Auswirkung ist undefiniert, wenn die OFL -Variable Flags außerhalb von O_Creat und O_EXCL enthält. Eine Zeichenfolge, die ein Semaphorelement angibt, ist die Quelle des Namensparameters. Wenn der Wert in den Systemdateien liegt und den Methoden, die die Pfadnamen verwenden, als Parameter nicht bereitgestellt werden, erfüllt der Name Parameter die Anforderungen für die Bildung eines Pfadnamens. Das ursprüngliche Element im Namen ist ein Schrägstrich (/), und keine anderen Elemente im Namen können Schrägstriche enthalten.

Für jeden aufeinanderfolgenden Zugriff auf die Funktion Sem_open () wird der gleiche Semaphor -Ort bereitgestellt, dass eine Methode mit dem ähnlichen Namenswert, vorausgesetzt, keine Argumente für Sem_unlink () -Funktion für solche Semaphoren erfolgen. Links zu den Semaphor -Duplikaten erzeugen inkonsistente Ergebnisse. Nicht identifizierte Semaphoren werden mit der Methode Sem_init () verwendet.

Rückgabewert

Die Funktion gibt den Ort des Semaphors nach einer erfolgreichen Ausführung zurück. Wenn nicht, sollte dies zugewiesen werden, um den Fehler zu identifizieren und die Ergebnisse des SEM fehlgeschlagen zu generieren. Der Header enthält eine Beschreibung für den Begriff SEM fehlgeschlagen. Wenn der sem_open () fehlschlägt, liefert es immer den Wert in Form des SEM fehl.

Beispiel für SEM_OPEN 3 C -Funktion in Ubuntu

Mal sehen, wie die Funktion sem_open () in Ubuntu funktioniert. Zu Beginn des Programms werden verschiedene Bibliotheken importiert. Diese Module sind verantwortlich für den Betrieb der verschiedenen Funktionen. Dann definieren wir die Größe des Puffers und setzen ihn auf 10. Wir initialisieren einen variablen Puffer und deklarieren die verschiedenen anderen Variablen. Im nächsten Schritt initialisieren wir die Zählervariable zusammen mit diesen beiden angegebenen Konstruktoren. Wir wenden die für die Schleife an und definieren den Zustand. Wir verwenden auch die while -Schleife.

Wir prüfen, ob der Wert der Zählervariablen der Größe des Puffers entspricht, indem wir eine while -Schleife verwenden. Wenn der Wert des Zählers jedoch geringer ist als die Größe des Puffer. Darüber hinaus verwenden wir die Sleep () -Funktion, um die Ausgabe für eine Weile zu halten.

Wir verwenden den Hohlraumkonstruktor des Verbrauchers. In diesem Fall wenden wir den Konstruktor der Var -Variablen an. Wir initialisieren die Variable "Element". Dann verwenden wir eine Weile Schleife. Danach verwenden wir die IF -Anweisung, um zu bestätigen, ob der Wert des Zählers größer als 0 ist oder nicht. Wenn der Wert der Zählervariable größer als 0 ist, ist der Wert des Zählers abnimmt.


In dieser Phase des Code deklarieren wir die verschiedenen Variablen. Jetzt erklären wir einen Konstruktor. Wir nennen die Sem_open () -Methode. Es enthält vier verschiedene Parameter. Um das Programm zu beenden, wenden wir die Funktion pThread_exit () an.

Wir erhalten diese folgende Art von Ausgabe, nachdem wir den Overhead -Code ausgeführt haben:

Abschluss

In diesem Editorial haben wir über die Verwendung der Sem_Open 3 C -Funktion in Ubuntu gesprochen. Zuerst haben wir die Syntax dieser Funktion gesehen. Dann haben wir einige Merkmale dieser Funktion beschrieben. Nach all dem haben wir ein Programm in Ubuntu mit der Funktion sem_open () ausgeführt.