كيف هو "المصافحة" عموما تنفيذها فيما يتعلق أنابيب الاتصال المسماة

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

سؤال

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

أنا ببساطة لا يمكن أن نعتقد أن ليس هناك أنماط للقيام بذلك.شخص ما يمكن أن تشير لي إلى احتمال الموارد ؟

في الكشف الكامل هذا هو حل الواجبات ولكن تنفيذ هذا النمط ليس المنزلية.نحن بحاجة إلى حل مشكلة داخل المنزلية رمز وأعتقد أن هذا حل ممكن.الواجبات المنزلية التي يتم تنفيذها في C++ -- ولكن اللغات لا يهم بالنسبة لي.أنا فقط لا تريد إعادة اختراع العجلة....

التحديث:لدي شعور بأن هذا قد يكون تنفيذها مع إشارات.

ما أعنيه المصافحة هو أن الطفل عملية التقارير إلى أنها عملية الأصل أنه جاهز للعمل ولكن لا المضي قدما (حتى إذا كان هناك شيء في الأنابيب) حتى الوالد يعطي إشارة الذهاب.في نظرية العمل ، وسوف يكون العديد من الأطفال في العمليات التي تحتاج إلى تقرير جاهزة و انتظر من أجل الذهاب إشارة من الأصل.

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

المحلول

في نموذجية استخدام العمليات تعتمد على منع المصافحة.الكاتب عملية فتح الأنابيب للكتابة القارئ عملية فتح الأنابيب للقراءة ، أيهما يحدث أولا كتل حتى عملية أخرى يفتح جانبها.هذا يمكن أن تمتد إلى استخدام nonblocking IO على الجانب القارئ.

توجيهات مفيدة واحدة IPC.في واحد لكثير الحالة ، ربما يجب عليك استخدام يونكس المجال مأخذ بدلا من ذلك.

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