uname(2)

الاسم
uname - الحصول على الاسم والمعلومات حول النواة الحالية

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

موجز
#include <sys/utsname.h>

int uname(struct utsname *buf);

الوصف
uname() يُرجع معلومات النظام في البنية المشار إليها بواسطة buf. بنية utsname مُعرَّفة في <sys/utsname.h>:

    struct utsname {
        char sysname[];    /* Operating system name (e.g., "Linux") */
        char nodename[];   /* Name within communications network
                              to which the node is attached, if any */
        char release[];    /* Operating system release
                              (e.g., "2.6.28") */
        char version[];    /* Operating system version */
        char machine[];    /* Hardware type identifier */
    #ifdef _GNU_SOURCE
        char domainname[]; /* NIS or YP domain name */
    #endif
    };

طول المصفوفات في struct utsname غير محدد (انظر الإصدارات والتاريخ); الحقول مُنتهية ببايت فارغ ('\0').

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

الأخطاء

EFAULT
    buf غير صالح.

الإصدارات
العضو domainname (اسم نطاق NIS أو YP) هو امتداد GNU.

طول الحقول في البنية يختلف. بعض أنظمة التشغيل أو المكتبات تستخدم قيماً ثابتة مثل 9 أو 33 أو 65 أو 257. أنظمة أخرى تستخدم SYS_NMLN أو _SYS_NMLN أو UTSLEN أو _UTSNAME_LENGTH. من الواضح أن استخدام أي من هذه الثوابت فكرة سيئة؛ فقط استخدم sizeof(...). SVr4 يستخدم 257، "لدعم أسماء المضيفين على الإنترنت" —هذه أكبر قيمة يُحتمل مواجهتها في الممارسة العملية—.

المعايير
POSIX.1-2024.

التاريخ
POSIX.1-2001, SVr4, 4.4BSD.

  الاختلافات بين مكتبة C والنواة
مع مرور الوقت، أدت الزيادات في حجم بنية utsname إلى ثلاثة إصدارات متتالية من uname(): sys_olduname() (الفتحة __NR_oldolduname), sys_uname() (الفتحة __NR_olduname), و sys_newuname() (الفتحة __NR_uname). الأول استخدم طول 9 لجميع الحقول؛ الثاني استخدم 65؛ الثالث يستخدم أيضًا 65 لكنه يضيف الحقل domainname. دالة الغلاف glibc uname() تُخفي هذه التفاصيل عن التطبيقات، مستدعية أحدث إصدار من استدعاء النظام الذي توفره النواة.

ملاحظات
النواة تحتوي على الاسم والإصدار والنسخة ونوع الجهاز المدعوم مدمجاً. على العكس، الحقل nodename يُهيأ من قبل المسؤول ليتوافق مع الشبكة (هذا ما يسميه BSD تاريخياً "اسم المضيف"، ويُضبط عبر sethostname(2)). وبالمثل، الحقل domainname يُضبط عبر setdomainname(2).

جزء من معلومات utsname يمكن الوصول إليه أيضًا عبر /proc/sys/kernel/{ostype, hostname, osrelease, version, domainname}.

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

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

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

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