|
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"