pty(7)

الاسم
pty - واجهات المحاكي الطرفي

الوصف
المحاكي الطرفي (يُختصر أحيانًا "pty") هو زوج من أجهزة الأحرف الافتراضية التي توفر قناة اتصال ثنائية الاتجاه. أحد طرفي القناة يُسمى السيد؛ والطرف الآخر يُسمى التابع.

طرف التابع للمحاكي الطرفي يوفر واجهة تتصرف تمامًا مثل الطرفية التقليدية. العملية التي تتوقع الاتصال بطرفية، يمكنها فتح طرف التابع لمحاكي طرفي ثم تُدار بواسطة برنامج فتح طرف السيد. أي شيء يُكتب على طرف السيد يُقدم للعملية على طرف التابع كما لو كان إدخالًا مكتوبًا على طرفية. على سبيل المثال، كتابة حرف المقاطعة (عادةً control-C) إلى جهاز السيد ستؤدي إلى توليد إشارة مقاطعة (SIGINT) لمجموعة العملية الأمامية المتصلة بالتابع. بالمقابل، أي شيء يُكتب إلى طرف التابع للمحاكي الطرفي يمكن قراءته بواسطة العملية المتصلة بطرف السيد.

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

تاريخيًا، تطورت واجهتا برمجة تطبيقات للمحاكي الطرفي: BSD وSystem V. SUSv1 وحدت واجهة برمجة تطبيقات للمحاكي الطرفي بناءً على واجهة System V، ويجب استخدام هذه الواجهة في جميع البرامج الجديدة التي تستخدم المحاكيات الطرفية.

لينكس يوفر كلاً من المحاكيات الطرفية بنمط BSD وبنمط System V (الموحد). المحاكيات الطرفية بنمط System V تُسمى عادةً محاكيات طرفية UNIX 98 على أنظمة لينكس.

منذ لينكس 2.6.4، المحاكيات الطرفية بنمط BSD تُعتبر مهملة: يمكن تعطيل الدعم عند بناء النواة بتعطيل خيار CONFIG_LEGACY_PTYS. (بدءًا من لينكس 2.6.30، هذا الخيار معطل افتراضيًا في النواة الرئيسية.) يجب استخدام محاكيات طرفية UNIX 98 في التطبيقات الجديدة.

  محاكيات طرفية UNIX 98
يُفتح سيد محاكي طرفي UNIX 98 غير مستخدم باستدعاء posix_openpt(3). (هذه الدالة تفتح جهاز الاستنساخ الرئيسي، /dev/ptmx؛ انظر pts(4).) بعد تنفيذ أي تهيئات خاصة بالبرنامج، وتغيير ملكية وصلاحيات جهاز التابع باستخدام grantpt(3)، وفتح قفل التابع باستخدام unlockpt(3))، يمكن فتح جهاز التابع المقابل بتمرير الاسم الذي أعادته ptsname(3) في استدعاء لـ open(2).

نواة لينكس تفرض حدًا على عدد المحاكيات الطرفية UNIX 98 المتاحة. حتى لينكس 2.6.3 وما يشمل، هذا الحد يُكوّن في وقت تجميع النواة (CONFIG_UNIX98_PTYS)، والعدد المسموح به من المحاكيات الطرفية يمكن أن يصل إلى 2048، مع إعداد مبدئي قدره 256. منذ لينكس 2.6.4، الحد قابل للتعديل ديناميكيًا عبر /proc/sys/kernel/pty/max، وملف مقابل، /proc/sys/kernel/pty/nr، يشير إلى عدد المحاكيات الطرفية المستخدمة حاليًا. لمزيد من التفاصيل حول هذين الملفين، انظر proc(5).

  محاكيات طرفية BSD
المحاكيات الطرفية بنمط BSD تُوفر كأزواج مُنشأة مسبقًا، بأسماء من الشكل /dev/ptyXY (سيد) و /dev/ttyXY (عبد)، حيث X حرف من المجموعة المكونة من 16 حرفًا [p-za-e]، وY حرف من المجموعة المكونة من 16 حرفًا [0-9a-f]. (النطاق الدقيق للأحرف في هاتين المجموعتين يختلف عبر تطبيقات UNIX.) على سبيل المثال، /dev/ptyp1 و /dev/ttyp1 يشكلان زوج محاكي طرفي BSD. العملية تجد زوج محاكي طرفي غير مستخدم بمحاولة open(2) لكل سيد محاكي طرفي حتى ينجح الفتح. ثم يمكن فتح التابع المقابل للمحاكي الطرفي (استبدال "tty" بـ "pty" في اسم السيد).

الملفات

/dev/ptmx
    جهاز استنساخ السيد UNIX 98

/dev/pts/*
    أجهزة التابع UNIX 98

/dev/pty[p-za-e][0-9a-f]
    أجهزة السيد BSD

/dev/tty[p-za-e][0-9a-f]
    أجهزة التابع BSD

ملاحظات
المحاكيات الطرفية تُستخدم بواسطة تطبيقات مثل خدمات تسجيل الدخول الشبكية (ssh(1), rlogin(1), telnet(1))، ومحاكيات الطرفية مثل xterm(1), script(1), screen(1), tmux(1), unbuffer(1), و expect(1).

وصف لـ TIOCPKT ioctl(2)، الذي يتحكم في تشغيل وضع الحزمة، يمكن العثور عليه في ioctl_tty(2).

عمليات BSD ioctl(2) TIOCSTOP و TIOCSTART و TIOCUCNTL و TIOCREMOTE لم تُنفذ تحت لينكس.

انظر أيضًا
ioctl_tty(2), select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4)

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

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

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