.\" -*- coding: UTF-8 -*- .\" Copyright 1983-1991, The Regents of the University of California. .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH accept 2 "29 أكتوبر 2025" "صفحات دليل لينكس 6.18" .SH الاسم accept, accept4 \- قبول اتصال على مقبس .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBint accept(int \fP\fIsockfd\fP\fB, struct sockaddr *_Nullable restrict \fP\fIaddr\fP\fB,\fP \fB socklen_t *_Nullable restrict \fP\fIaddrlen\fP\fB);\fP .P \fB#define _GNU_SOURCE\fP /* See feature_test_macros(7) */ \fB#include \fP .P \fBint accept4(int \fP\fIsockfd\fP\fB, struct sockaddr *_Nullable restrict \fP\fIaddr\fP\fB,\fP \fB socklen_t *_Nullable restrict \fP\fIaddrlen\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .SH الوصف استدعاء النظام \fBaccept\fP() يُستخدم مع أنواع المقابس القائمة على الاتصال (\fBSOCK_STREAM\fP, \fBSOCK_SEQPACKET\fP). يستخرج أول طلب اتصال في قائمة انتظار الاتصالات المعلقة للمقبس المستمع، \fIsockfd\fP، وينشئ مقبسًا متصلًا جديدًا، ويعيد واصف ملف جديد يشير إلى ذلك المقبس. المقبس المُنشأ حديثًا ليس في حالة الاستماع. المقبس الأصلي \fIsockfd\fP لا يتأثر بهذا الاستدعاء. .P الوسيط \fIsockfd\fP هو مقبس تم إنشاؤه باستخدام \fBsocket\fP(2)، وربطه بعنوان محلي باستخدام \fBbind\fP(2)، ويستمع للاتصالات بعد \fBlisten\fP(2). .P الوسيط \fIaddr\fP هو مؤشر لبنية \fIsockaddr\fP. تُملأ هذه البنية بعنوان المقبس النظير، كما هو معروف لطبقة الاتصالات. التنسيق الدقيق للعنوان المُعاد \fIaddr\fP يُحدد بواسطة عائلة عنوان المقبس (انظر \fBsocket\fP(2) وصفحات الدليل الخاصة بالبروتوكول). عندما يكون \fIaddr\fP NULL، لا يُملأ شيء؛ في هذه الحالة، لا يُستخدم \fIaddrlen\fP، ويجب أن يكون NULL أيضًا. .P الوسيط \fIaddrlen\fP هو وسيط قيمة\-نتيجة: يجب على المستدعي تهيئته ليحتوي على الحجم (بالبايت) للبنية المشار إليها بواسطة \fIaddr\fP؛ عند العودة سيحتوي على الحجم الفعلي لعنوان النظير. .P يُبتر العنوان المُعاد إذا كان المخزن المؤقت المقدم صغيرًا جدًا؛ وفي هذه الحالة، سيعيد \fIaddrlen\fP قيمة أكبر مما تم تمريره للاستدعاء. .P إذا لم تكن هناك اتصالات معلقة في قائمة الانتظار، ولم يكن المقبس مُعلّمًا كغير محظور، فإن \fBaccept\fP() يحظر المستدعي حتى يظهر اتصال. إذا كان المقبس مُعلّمًا كغير محظور ولم تكن هناك اتصالات معلقة في قائمة الانتظار، فإن \fBaccept\fP() يفشل مع الخطأ \fBEAGAIN\fP أو \fBEWOULDBLOCK\fP. .P للإشعار بالاتصالات الواردة على مقبس، يمكنك استخدام \fBselect\fP(2) أو \fBpoll\fP(2) أو \fBepoll\fP(7). سيتم تسليم حدث قابل للقراءة عند محاولة اتصال جديد، ويمكنك بعد ذلك استدعاء \fBaccept\fP() للحصول على مقبس لذلك الاتصال. بدلاً من ذلك، يمكنك ضبط المقبس لتسليم \fBSIGIO\fP عند حدوث نشاط على مقبس؛ انظر \fBsocket\fP(7) للتفاصيل. .P إذا كان \fIflags\fP يساوي 0، فإن \fBaccept4\fP() هو نفسه \fBaccept\fP(). يمكن إجراء عملية OR بت\-wise على القيم التالية في \fIflags\fP للحصول على سلوك مختلف: .TP 16 \fBSOCK_NONBLOCK\fP اضبط علامة حالة الملف \fBO_NONBLOCK\fP على وصف الملف المفتوح (انظر \fBopen\fP(2)) المشار إليه بواسطة واصف الملف الجديد. استخدام هذه العلامة يوفر استدعاءات إضافية لـ \fBfcntl\fP(2) لتحقيق النتيجة نفسها. .TP \fBSOCK_CLOEXEC\fP اضبط علامة الإغلاق عند التنفيذ (\fBFD_CLOEXEC\fP) على واصف الملف الجديد. انظر وصف العلامة \fBO_CLOEXEC\fP في \fBopen\fP(2) للأسباب التي تجعل هذا مفيدًا. .SH "قيمة الإرجاع" عند النجاح، تعيد استدعاءات النظام هذه واصف ملف للمقبس المقبول (عدد صحيح غير سالب). عند الخطأ، يتم إرجاع \-1، ويتم تعيين \fIerrno\fP للإشارة إلى الخطأ، ويُترك \fIaddrlen\fP دون تغيير. .SS "معالجة الأخطاء" يقوم Linux \fBaccept\fP() (و \fBaccept4\fP()) بتمرير أخطاء الشبكة المعلقة بالفعل على المقبس الجديد كرمز خطأ من \fBaccept\fP(). يختلف هذا السلوك عن تطبيقات مقبس BSD الأخرى. للتشغيل الموثوق، يجب على التطبيق اكتشاف أخطاء الشبكة المُعرّفة للبروتوكول بعد \fBaccept\fP() ومعاملتها مثل \fBEAGAIN\fP بإعادة المحاولة. في حالة TCP/IP، هذه هي \fBENETDOWN\fP و \fBEPROTO\fP و \fBENOPROTOOPT\fP و \fBEHOSTDOWN\fP و \fBENONET\fP و \fBEHOSTUNREACH\fP و \fBEOPNOTSUPP\fP و \fBENETUNREACH\fP. .SH الأخطاء .TP \fBEAGAIN\fP أو \fBEWOULDBLOCK\fP .\" Actually EAGAIN on Linux المقبس مُعلّم كغير محظور ولا توجد اتصالات لقبولها. يسمح POSIX.1\-2001 و POSIX.1\-2008 بإرجاع أي من الخطأين لهذه الحالة، ولا يتطلبان أن تكون هذه الثوابت بنفس القيمة، لذا يجب على التطبيق المحمول التحقق من كلا الاحتمالين. .TP \fBEBADF\fP \fIsockfd\fP ليس واصف ملف مفتوح. .TP \fBECONNABORTED\fP أُحبط اتصال. .TP \fBEFAULT\fP الوسيط \fIaddr\fP ليس في جزء قابل للكتابة من مساحة عنوان المستخدم. .TP \fBEINTR\fP تم مقاطعة استدعاء النظام بواسطة إشارة تم التقاطها قبل وصول اتصال صالح؛ انظر \fBsignal\fP(7). .TP \fBEINVAL\fP المقبس لا يستمع للاتصالات، أو \fIaddrlen\fP غير صالح (مثلًا، سالب). .TP \fBEINVAL\fP (\fBaccept4\fP()) قيمة غير صالحة في \fIflags\fP. .TP \fBEMFILE\fP وُصل إلى الحد الأقصى لواصفات الملفات المفتوحة لكل عملية. .TP \fBENFILE\fP وُصل إلى الحد الأقصى لإجمالي عدد الملفات المفتوحة على مستوى النظام. .TP \fBENOBUFS\fP .TQ \fBENOMEM\fP ذاكرة حرة غير كافية. هذا يعني غالبًا أن تخصيص الذاكرة محدود بحدود مخزن المقبس المؤقت، وليس بذاكرة النظام. .TP \fBENOTSOCK\fP واصف الملف \fIsockfd\fP لا يشير إلى مقبس. .TP \fBEOPNOTSUPP\fP المقبس المُشار إليه ليس من النوع \fBSOCK_STREAM\fP. .TP \fBEPERM\fP قواعد جدار الحماية تمنع الاتصال. .TP \fBEPROTO\fP خطأ بروتوكول. .P بالإضافة إلى ذلك، قد يتم إرجاع أخطاء الشبكة للمقبس الجديد كما هو مُعرّف للبروتوكول. يمكن لأنوية Linux المختلفة إرجاع أخطاء أخرى مثل \fBENOSR\fP و \fBESOCKTNOSUPPORT\fP و \fBEPROTONOSUPPORT\fP و \fBETIMEDOUT\fP. قد تظهر القيمة \fBERESTARTSYS\fP أثناء التتبع. .SH الإصدارات .\" Some testing seems to show that Tru64 5.1 and HP-UX 11 also .\" do not inherit file status flags -- MTK Jun 05 على Linux، المقبس الجديد المُعاد بواسطة \fBaccept\fP() \fIلا\fP يرث أعلام حالة الملف مثل \fBO_NONBLOCK\fP و \fBO_ASYNC\fP من المقبس المستمع. يختلف هذا السلوك عن تطبيق مقابس BSD التقليدي. يجب ألا تعتمد البرامج المحمولة على وراثة أو عدم وراثة أعلام حالة الملف، ودائمًا تضبط صراحة جميع الأعلام المطلوبة على المقبس المُعاد من \fBaccept\fP(). .SH المعايير POSIX.1\-2024. .SH التاريخ .TP \fBaccept\fP() .\" The BSD man page documents five possible error returns .\" (EBADF, ENOTSOCK, EOPNOTSUPP, EWOULDBLOCK, EFAULT). .\" POSIX.1-2001 documents errors .\" EAGAIN, EBADF, ECONNABORTED, EINTR, EINVAL, EMFILE, .\" ENFILE, ENOBUFS, ENOMEM, ENOTSOCK, EOPNOTSUPP, EPROTO, EWOULDBLOCK. .\" In addition, SUSv2 documents EFAULT and ENOSR. POSIX.1\-2001, SVr4, 4.4BSD (\fBaccept\fP() ظهر أولاً في 4.2BSD). .TP \fBaccept4\fP() POSIX.1\-2024. Linux 2.6.28, glibc 2.10. .SH ملاحظات قد لا يكون هناك اتصال منتظر دائمًا بعد تسليم \fBSIGIO\fP أو إرجاع \fBselect\fP(2) أو \fBpoll\fP(2) أو \fBepoll\fP(7) حدث قابلية للقراءة، لأن الاتصال قد أُزيل بواسطة خطأ شبكة غير متزامن أو خيط آخر قبل استدعاء \fBaccept\fP(). إذا حدث هذا، فسيحظر الاستدعاء في انتظار وصول الاتصال التالي. لضمان عدم حظر \fBaccept\fP() أبدًا، يجب أن تحتوي المقبس المُمرر \fIsockfd\fP على العلم \fBO_NONBLOCK\fP (انظر \fBsocket\fP(7)). .P .\" بالنسبة لبعض البروتوكولات التي تتطلب تأكيدًا صريحًا، مثل DECnet، يمكن اعتبار \fBaccept\fP() مجرد إزالة طلب الاتصال التالي من قائمة الانتظار دون تضمين تأكيد. يمكن تضمين التأكيد عن طريق قراءة أو كتابة عادية على واصف الملف الجديد، ويمكن تضمين الرفض عن طريق إغلاق المقبس الجديد. حاليًا، فقط DECnet لديها هذه الدلالات على Linux. .SS "النوع socklen_t" .\" such as Linux libc4 and libc5, SunOS 4, SGI .\" SunOS 5 has 'size_t *' في تطبيق مقابس BSD الأصلي (وعلى أنظمة أقدم أخرى)، أُعلن الوسيط الثالث لـ \fBaccept\fP() كـ \fIint\ *\fP. أراد مسودة معيار POSIX.1g تغييره إلى \fIsize_t\ *\fP؛ لاحقًا، معايير POSIX و glibc 2.x لديها \fIsocklen_t\ *\fP. .SH أمثلة انظر \fBbind\fP(2). .SH "انظر أيضًا" \fBbind\fP(2)، \fBconnect\fP(2)، \fBlisten\fP(2)، \fBselect\fP(2)، \fBsocket\fP(2)، \fBsocket\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .