ttyslot(3)

الاسم
ttyslot - إيجاد موضع طرفية المستخدم الحالي في ملف ما

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

موجز
#include <unistd.h>       /* انظر في الملاحظات */

int ttyslot(void);

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

ttyslot():
    Since glibc 2.24:
        _DEFAULT_SOURCE
    From glibc 2.20 to glibc 2.23:
        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
    glibc 2.19 and earlier:
        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

الوصف
الدالة القديمة ttyslot() تُرجع فهرس إدخال المستخدم الحالي في ملف ما.

الآن تسأل "أي ملف؟" حسنًا، لننظر أولاً إلى بعض التاريخ.

  تاريخ قديم
كان يوجد ملف /etc/ttys في UNIX V6، يُقرأ بواسطة برنامج init(1) لمعرفة ما يُفعل بكل خط طرفية. كل سطر يتكون من ثلاثة محارف. الحرف الأول كان إما '0' أو '1'، حيث '0' يعني "تجاهل". الحرف الثاني يُشير إلى الطرفية: '8' يرمز إلى "/dev/tty8". الحرف الثالث كان وسيطًا لـ getty(8) يُشير إلى تسلسل سرعات الخط لتجربتها ('-' كان: ابدأ بتجربة 110 باود). وهكذا كان السطر النموذجي "18-". عُولج تعليق على خط ما بتغيير '1' إلى '0'، وإرسال إشارة إلى init، ثم إعادته مرة أخرى، وإرسال إشارة أخرى إلى init.

في UNIX V7، تغير التنسيق: هنا الحرف الثاني كان الوسيط لـ getty(8) يُشير إلى تسلسل سرعات الخط لتجربتها ('0' كان: دورة عبر 300-1200-150-110 باود؛ '4' كان لوحدة التحكم المتصلة DECwriter) بينما يحتوي باقي السطر على اسم الطرفية. وهكذا كان السطر النموذجي "14console".

الأنظمة اللاحقة لها بناء جملة أكثر تفصيلاً. الأنظمة المشابهة لـ System V لديها /etc/inittab بدلاً من ذلك.

  تاريخ قديم (2)
من ناحية أخرى، يوجد الملف /etc/utmp الذي يُدرج الأشخاص المسجلين حاليًا. يُحافظ عليه بواسطة login(1). له حجم ثابت، والفهرس المناسب في الملف يُحدد بواسطة login(1) باستخدام استدعاء ttyslot() لإيجاد رقم السطر في /etc/ttys (بدء العد من 1).

  دلالات ttyslot
وبالتالي، الدالة ttyslot() تُرجع فهرس الطرفية المسيطرة لعملية الاستدعاء في الملف /etc/ttys، وهذا (عادةً) هو نفسه فهرس إدخال المستخدم الحالي في الملف /etc/utmp. لا يزال BSD يمتلك الملف /etc/ttys، لكن الأنظمة المشابهة لـ System V لا تمتلكه، وبالتالي لا يمكنها الإشارة إليه. لذا، على هذه الأنظمة، يقول التوثيق أن ttyslot() تُرجع فهرس المستخدم الحالي في قاعدة بيانات محاسبة المستخدم.

قيمة الإرجاع
إذا نجحت، تُرجع هذه الدالة رقم الموضع. عند الخطأ (مثلًا، إذا لم يكن أي من واصفات الملفات 0 أو 1 أو 2 مرتبطًا بطرفية موجودة في قاعدة البيانات هذه) تُرجع 0 على UNIX V6 وV7 والأنظمة المشابهة لـ BSD، لكن -1 على الأنظمة المشابهة لـ System V.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
ttyslot() | سلامة الخيوط | غير آمن لتعدد الخيوط (MT-Unsafe)

الإصدارات
ملف utmp يُوجد في أماكن مختلفة على أنظمة مختلفة، مثل /etc/utmp و/var/adm/utmp و/var/run/utmp.

المعايير
لا شيء.

التاريخ
SUSv1؛ وُسم كـ LEGACY في SUSv2؛ أُزيل في POSIX.1-2001. SUSv2 يتطلب -1 عند الخطأ.

تقرأ دالة glibc2 لهذه الدالة الملف _PATH_TTYS، المُعرَّف في <ttyent.h> باسم "/etc/ttys". تُرجع 0 عند الخطأ. نظرًا لأن أنظمة Linux لا تحتوي عادةً على "/etc/ttys"، فستُرجع دائمًا 0.

في الأنظمة الشبيهة بـ BSD و Linux، يُوفَّر تعريف ttyslot() بواسطة <unistd.h>. في الأنظمة الشبيهة بـ System V، يُوفَّر التعريف بواسطة <stdlib.h>. منذ glibc 2.24، يُوفِّر <stdlib.h> أيضًا التعريف مع تعريفات وحدات الماكرو لاختبار الميزات التالية:

    (_XOPEN_SOURCE >= 500 ||
            (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED))
        && ! (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)

يحتوي Minix أيضًا على fttyslot(fd).

انظر أيضًا
getttyent(3)، ttyname(3)، utmp(5)

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

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

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