close

Wie sieht's aus?

#include <unistd.h>

int close(int d);
    

Was tut's?

Es schliesst einen Socket. Wenn ein Prozeß beendet wird, dann werden alle Sockets automatisch geschlossen.

Es gibt eine Socket-Option namens SO_LINGER, die das Verhalten beim Aufruf von close() beeinflusst. Normalerweise blockiert close() nicht, noch ausstehende Daten werden vom System versendet. Allerdings ist ungewiß, ob dies auch klappt, denn nach dem close() hat man keine Möglichkeit mehr dies zu prüfen. Durch SO_LINGER kann eine Wartezeit angegeben werden. Außerdem kann bewirkt werden, daß ein Socket sofort geschlossen wird, ohne daß die noch ausstehenden Daten versendet werden. Eine ausführlichere Beschreibung findet sich in meinem Socket-Buch (siehe Startseite), Kapitel 8.1.5.

Bemerkung
Unter Windows heisst dieser Befehl closesocket() und wird genau wie close() verwendet.

Was machen die Parameter?

Der Parameter gibt den Socket an, der geschlossen werden soll. Er heisst in diesem Prototyp (den ich aus der FreeBSD-Manpage habe) übrigens d, weil close() generell auf Dateideskriptoren operiert, und sich Sockets (nicht nur) hier genau wie Dateien, Pipes und ähnliche Ressourcen verhalten.

Wie verwende ich es?

close(s);