unlink( ) nach bind( )
-
Hallo
Es geht hier um FreeBSD sockets die Freigabe danach.
In Manual zu bind(2) http://www.freebsd.org/cgi/man.cgi?query=bind&apropos=0&sektion=2&manpath=FreeBSD+8.0-RELEASE&format=html
steht, das nach einem bind die gebundene sockaddr Struktur wieder freigegeben werden muss. Dann wird es für genaue Informationen auf unlink verwiesen und das wars. -Aber in man zu unlink steht nichts von sockaddr Freigabe.Was ich wissen möchte ist:
- wieso nirgends ( Guides, Tutorials, Beispiele ) erwähnt wird, das die sockaddr wieder freigegeben werden muss? Zumal in NOTES steht:
Binding an address in the UNIX domain creates a socket in the file system
that must be deleted by the caller when it is no longer needed (using
unlink(2)).-Überall wird nur close() am Schlüss benutzt.
2) Wie muss jetzt der unlink(at)-Aufruf aussehen?Danke
-
Feld schrieb:
In Manual zu bind(2) http://www.freebsd.org/cgi/man.cgi?query=bind&apropos=0&sektion=2&manpath=FreeBSD+8.0-RELEASE&format=html
steht, das nach einem bind die gebundene sockaddr Struktur wieder freigegeben werden muss.Da steht, dass der Socket freigegeben werden muss.
Außerdem steht da, dass das nur für UNIX domain sockets gilt. Hast du denn überhaupt einen UNIX domain socket? Sprich, hast du ihn mit PF_LOCAL/PF_UNIX angelegt?
-
Ich hab den Socket angelegt mit
sd = socket( PF_INET, SOCK_STREAM, 0 );
Unter UNIX domain verstehe ich einfach UNIX Plattform - was soll man sonst darunter verstehen? Und wieso wird da unlink() gesagt und nicht close() wie es sonst überall verwendet wird?
-
Feld schrieb:
Ich hab den Socket angelegt mit
sd = socket( PF_INET, SOCK_STREAM, 0 );
Das ist ein IPv4 Socket (PF_INET), kein UNIX domain socket (PF_LOCAL oder PF_UNIX).
Feld schrieb:
Unter UNIX domain verstehe ich einfach UNIX Plattform - was soll man sonst darunter verstehen?
http://en.wikipedia.org/wiki/Unix_domain_socket
Feld schrieb:
Und wieso wird da unlink() gesagt und nicht close() wie es sonst überall verwendet wird?
Weil diese Art Sockets durch Einträge im Dateisystem repräsentiert wird. Und um solche zu entfernen, benutzt man unlink.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.