gethostname(2)

الاسم
gethostname, sethostname - الحصول/تعيين اسم المضيف

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <unistd.h>

int gethostname(char *name, size_t size);
int sethostname(const char *name, size_t size);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

gethostname():
    _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
        || /* glibc 2.19 والإصدارات الأقدم */ _BSD_SOURCE

sethostname():
    منذ glibc 2.21:
        _DEFAULT_SOURCE
    في glibc 2.19 و 2.20:
        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
    حتى glibc 2.19 وما قبله:
        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

الوصف
تُستخدم استدعاءات النظام هذه للوصول إلى اسم مضيف النظام أو تغييره. بشكل أكثر دقة، تعمل على اسم المضيف المرتبط بمساحة أسماء UTS الخاصة بالعملية المستدعية.

يضبط sethostname() اسم المضيف على القيمة المعطاة في مصفوفة الأحرف name. تحدد الوسيطة size عدد البايتات في name. (وبالتالي، لا تتطلب name بايت فارغ في النهاية.)

يعيد gethostname() اسم المضيف المنتهي بفارغ في مصفوفة الأحرف name، التي حجمها size بايت. إذا كان اسم المضيف المنتهي بفارغ كبيرًا جدًا بحيث لا يتسع، فسيتم اقتطاع الاسم، ولا يتم إرجاع أي خطأ (ولكن انظر الإصدارات أدناه). ينص POSIX.1 على أنه في حالة حدوث مثل هذا الاقتطاع، فمن غير المحدد ما إذا كانت المخزن المؤقت المرتجع يتضمن بايت فارغ في النهاية.

قيمة الإرجاع
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EFAULT
    name عنوان غير صالح.

EINVAL
    size سالب أو، بالنسبة لـ sethostname()، size أكبر من الحجم الأقصى المسموح به.

ENAMETOOLONG
    (glibc gethostname()) size أصغر من الحجم الفعلي. (قبل glibc 2.1، يستخدم glibc EINVAL لهذه الحالة.)

EPERM
    بالنسبة لـ sethostname()، لم يكن لدى المستدعي إمكانية CAP_SYS_ADMIN في مساحة أسماء المستخدم المرتبطة بمساحة أسماء UTS الخاصة به (انظر namespaces(7)).

الإصدارات
يضمن SUSv2 أن "أسماء المضيفين محدودة بـ 255 بايت". يضمن POSIX.1 أن "أسماء المضيفين (بدون تضمين البايت الفارغ في النهاية) محدودة بـ HOST_NAME_MAX بايت". على لينكس، يتم تعريف HOST_NAME_MAX بالقيمة 64، والتي كانت الحد منذ لينكس 1.0 (فرضت النوى الأقدم حدًا قدره 8 بايت).

  الاختلافات بين مكتبة C والنواة
لا تستخدم مكتبة GNU C استدعاء النظام gethostname()؛ بدلاً من ذلك، تنفذ gethostname() كدالة مكتبة تستدعي uname(2) وتنسخ حتى size بايت من حقل nodename المرتجع إلى name. بعد إجراء النسخ، تتحقق الدالة بعد ذلك مما إذا كان طول nodename أكبر من أو يساوي size، وإذا كان الأمر كذلك، فتعيد الدالة -1 مع ضبط errno على ENAMETOOLONG؛ في هذه الحالة، لا يتم تضمين بايت فارغ في النهاية في name المرتجع.

المعايير

gethostname()
    POSIX.1-2024.

sethostname()
    لا شيء.

التاريخ

gethostname()
    4.2BSD, SVr4, POSIX.1-2001.

sethostname()
    4.2BSD, SVr4.

تعالج إصدارات glibc قبل glibc 2.2 الحالة التي يكون فيها طول nodename أكبر من أو يساوي size بشكل مختلف: لا يتم نسخ أي شيء إلى name وتعيد الدالة -1 مع ضبط errno على ENAMETOOLONG.

انظر أيضًا
hostname(1), getdomainname(2), setdomainname(2), uname(2), uts_namespaces(7)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.