Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

t_sync() - Transportbibliothek synchronisieren

&pagelevel(4)&pagelevel

#include <xti.h>

int t_sync(int fd);

Beschreibung

Mit der Funktion t_sync() kann der Benutzer für den durch fd spezifizierten Transportendpunkt die von der Transportbibliothek verwalteten Datenstrukturen mit Informationen des darunter liegenden Transportanbieters synchronisieren. Außerdem ermöglicht t_sync() zwei kooperierenden Prozessen, ihre Interaktionen mit dem Transportanbieter zu synchronisieren.

Wenn beispielsweise ein Prozess einen neuen Prozess erzeugt und exec() aufruft, muss der neue Prozess die Funktion t_sync() aufrufen,

  • um die private Bibliotheks-Datenstruktur aufzubauen, die mit einem Transportendpunkt verbunden ist und

  • um die Datenstruktur mit relevanten Informationen des Transportanbieters zu synchronisieren.

Dabei ist zu beachten, dass der Transportanbieter alle Benutzer eines Transportendpunkts als einen einzigen Benutzer ansieht. Wenn also mehrere Benutzerprozesse denselben Transportendpunkt verwenden, sollten sie ihre Aufgaben so koordinieren, dass der Transportanbieter nicht in einen fehlerhaften Zustand gerät. Zu diesem Zweck können die einzelnen Benutzerprozesse mit t_sync() den aktuellen Transportanbieter-Zustand abfragen, bevor sie weitere Aktionen veranlassen.

Die Koordination mit t_sync() ist nur zwischen kooperierenden Prozessen erlaubt, da möglicherweise ein Prozess oder ein ankommendes Ereignis den Zustand des Transportanbieters verändert, nachdem t_sync() ausgeführt wurde.

Returnwert

t_sync() liefert bei erfolgreicher Ausführung den Zustand des Transportanbieters zurück.

Im Fehlerfall wird -1 zurückgeliefert und t_errno wird gesetzt, um den Fehler anzuzeigen.

Als Returnwerte von t_sync() sind folgende Zustände des Transportanbieters möglich:

T_UNBND

Der Transportendpunkt ist nicht an den Transportdienst gebunden.

T_IDLE

Der Transportendpunkt ist an den Transportdienst gebunden.

T_OUTCON

Eine abgeschickte Verbindungsanforderung wurde noch nicht bearbeitet.

T_INCON

Eine eingetroffene Verbindungsanforderung wurde noch nicht bearbeitet.

T_DATAXFER

Datentransfer-Phase

T_OUTREL

Wunsch nach geordnetem Verbindungsabbau wurde abgeschickt (Warten auf Anzeige eines geordneten Verbindungsabbaus).

T_INREL

Warten auf eine Anforderung zum geordneten Verbindungsabbau.

Fehler

TBADF

Der angegebene Dateideskriptor verweist nicht auf einen Transportendpunkt.

TSTATECHNG

Der Transportanbieter erfährt eine Zustandsänderung.

TSYSERR

Während der Ausführung dieser Funktion ist ein Systemfehler aufgetreten.

Siehe auch

dup(), exec(), fork() und open() in "C-Bibliotheksfunktionen für POSIX-Anwendungen"