socketcall - Systemaufrufe für Sockets
Standard-C-Bibliothek (
libc,
-lc)
#include <linux/net.h> /* Definition der SYS_*-Konstanten */
#include <sys/syscall.h> /* Definition von SYS_socketcall */
#include <unistd.h>
int syscall(SYS_socketcall, int Aufruf, unsigned long *Arg);
Hinweis: Glibc stellt keinen Wrapper für
socketcall()
bereit; hierdurch wird die Verwendung von
syscall(2) notwendig.
socketcall() ist ein gemeinsamer Kernel-Eintrittspunkt für die
Socket-Systemaufrufe.
Aufruf gibt an, welche Socket-Funktion aufgerufen
werden soll,
Arg zeigt auf einen Speicherbereich, dessen Inhalt als
Argumente an den entsprechenden Aufruf weitergeleitet wird.
Benutzerprogramme sollten die entsprechenden Funktionen mit ihren normalen Namen
aufrufen. Nur Programmierer von Standardbibliotheken oder Kernel-Hacker
müssen
socketcall() kennen.
Dieser Aufruf ist Linux-spezifisch und sollte nicht für portierbare
Programme verwendet werden.
Für einige Architekturen – beispielsweise x86-64 und ARM –
ist der Systemaufruf
socketcall() nicht implementiert. Stattdessen sind
socket(2),
accept(2),
bind(2) usw. wirklich als getrennte
Systemaufrufe realisiert.
Unter x86-32 war
socketcall() historisch der einzige Eintrittspunkt
für das Sockets-API. Beginnend mit Linux 4.3 werden allerdings direkte
Systemaufrufe unter x86-32 für das Sockets-API bereitgestellt. Dies
ermöglicht die Erstellung von
seccomp(2)-Filtern, die
Socket-Systemaufrufe filtern (für neue Anwendungsprogramme, die
für die Verwendung der neuen Eintrittspunkte übersetzt wurden),
und bietet auch ein (sehr) kleine Leistungsverbesserung.
accept(2),
bind(2),
connect(2),
getpeername(2),
getsockname(2),
getsockopt(2),
listen(2),
recv(2),
recvfrom(2),
recvmsg(2),
send(2),
sendmsg(2),
sendto(2),
setsockopt(2),
shutdown(2),
socket(2),
socketpair(2)
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze
<
[email protected]>, Martin Eberhard Schauer
<
[email protected]> und Helge Kreutzmann
<
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer