| socketcall(2) | System Calls Manual | socketcall(2) |
socketcall - системные вызовы сокетов
Стандартная библиотека языка C (libc, -lc)
#include <linux/net.h> /* Definition of SYS_* constants */ #include <sys/syscall.h> /* Definition of SYS_socketcall */ #include <unistd.h>
int syscall(SYS_socketcall, int call, unsigned long *args);
Note: glibc provides no wrapper for socketcall(), necessitating the use of syscall(2).
socketcall() — это общая точка входа в ядро всех системных вызовов сокетов. В аргументе call задаётся функция сокета, которая будет вызвана. Аргумент args указывает на блок параметров функции, которые передаются соответствующему вызову.
Пользовательские программы должны оперировать обычными функциями, имеющими стандартные имена. О существовании socketcall() необходимо знать лишь создателям стандартных библиотек и ядра.
| Вызов | Справочная страница |
| SYS_SOCKET | socket(2) |
| SYS_BIND | bind(2) |
| SYS_CONNECT | connect(2) |
| SYS_LISTEN | listen(2) |
| SYS_ACCEPT | accept(2) |
| SYS_GETSOCKNAME | getsockname(2) |
| SYS_GETPEERNAME | getpeername(2) |
| SYS_SOCKETPAIR | socketpair(2) |
| SYS_SEND | send(2) |
| SYS_RECV | recv(2) |
| SYS_SENDTO | sendto(2) |
| SYS_RECVFROM | recvfrom(2) |
| SYS_SHUTDOWN | shutdown(2) |
| SYS_SETSOCKOPT | setsockopt(2) |
| SYS_GETSOCKOPT | getsockopt(2) |
| SYS_SENDMSG | sendmsg(2) |
| SYS_RECVMSG | recvmsg(2) |
| SYS_ACCEPT4 | accept4(2) |
| SYS_RECVMMSG | recvmmsg(2) |
| SYS_SENDMMSG | sendmmsg(2) |
On some architectures—for example, x86-64 and ARM—there is no socketcall() system call; instead socket(2), accept(2), bind(2), and so on really are implemented as separate system calls.
Linux.
Для архитектуры x86-32, socketcall() исторически имел только одну точку входа в программном интерфейсе сокетов. Однако начиная с Linux 4.3, для x86-32 появились прямые системные вызовы в программном интерфейсе сокетов. for the sockets API. Это упрощает создание фильтров seccomp(2), которые отбирают системные вызовы сокетов (для новых пользовательских исполняемых файлов, которые компилируются с использованием новых точек входа), а также улучшают (совсем немного) производительность.
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)
Русский перевод этой страницы руководства разработал(и) Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
| 2 мая 2024 г. | Справочные страницы Linux 6.9.1 |