كيف يعمل خيار XterM -S (تمرير الاسم الطرفي الزائدي أو واصف) في Linux؟

StackOverflow https://stackoverflow.com/questions/1166493

  •  19-09-2019
  •  | 
  •  

سؤال

تحياتي تحياتي، في حين تقوم بتنفيذ كود سولاريس القديم 2.4 إلى Centos 5.3 جاءت عبر الاحتجاج

/usr/bin/xterm -S%s%d ...

حيث٪ S هو تسلسل مكون من حرفين XX مثل 00، 01 و٪ D هو واصف الملف الرقمي. كان هذا على ما يبدو وسيلة لإخبار xterm لاستخدام / dev / ttypxx (عبوة طرفية زائفة) ولكن لا يبدو أن التعليمات البرمجية لا يهتم بفتح الرئيسية المتقارنة، وأنابيب الاتصال (2) بدلا من ذلك ونقل اكتب FD كما٪ د الاستبدال أعلاه. على سولاريس، الكتابة إلى هذا الكتابة FD من Spawner يسبب الإخراج لتظهر في الطفل XterM. في ستراسة (1) لم أر أي محاولة لفتح أي شيء تحت / ديف، بالمناسبة.

هل كانت مفيدة؟

المحلول

بحسب ال solaris manpage., ، يقوم نداء نظام الأنابيب بإنشاء اثنين ثنائي الاتجاه أنابيب. لذلك على Solaris، يمكنك استخدام كل من FDS للقراءة والكتابة:

الملفات المرتبطة ببرز [01 هي الجداول وكلاهما مفتوح للقراءة والكتابة.

ومع ذلك وفقا للأنابيب (2) manpage على لينكس:

ينشئ الأنابيب () أنبوبا، قناة بيانات أحادية الاتجاه يمكن استخدامها للاتصال الشخصي.

ملاحظة أيضا ما يلي من الأنابيب (7):

في بعض الأنظمة (ولكن ليس Linux)، تكون الأنابيب ثنائية الاتجاه: يمكن نقل البيانات في كلا الاتجاهين بين نهايات الأنبوب. وفقا ل posix.1-2001، يجب أن تكون الأنابيب فقط أحادية الاتجاه. يجب أن تتجنب التطبيقات المحمولة الاعتماد على دلالات الأنابيب ثنائية الاتجاه.


لذلك، في Linux لا يمكنك تمرير Pipefd1, ، نهاية الكتابة، إلى xterm لأنها تتوقع FD اتصال ثنائي الاتجاه. لجعلها تعمل، يجب عليك استخدام openpty () وتمرير الرقيق FD إلى xterm.

AFAIK، Openpty غير متوفر على Solaris؛ يبدو أن هذا هو السبب في أن الكود الخاص بك لا يستخدمه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top