على لينكس، يمكن أن تجعل عملية GUI عملية آخر؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أكتب لاعب الفيديو على لينكس وأود أن فصلها إلى 2 العملية:

وA. عملية فك B. GUI

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

والمشكلة هي، يمكن أن العملية تجعل الصور فك الشفرة على سطح B مباشرة؟ أنا لا أريد أن استخدام بعض IPC لإرسال B هذه البيانات فك لأن ذلك قد يكون غير فعالة للغاية.

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

المحلول

ويمكنك استخدام XEmbed المواصفات، والذي يسمح لك لتضمين نافذة X11 واحد داخل آخر، وأنها قد تكون من العمليات المختلفة. هذا ما غيرها من الواجهات الأمامية وسائل الاعلام لاعب تفعل عادة.

وكلا GTK و كيو تي الدعم XEmbed.

نصائح أخرى

وIPC (خصوصا أنبوب يونكس) هو أكثر كفاءة بكثير ثم كنت تعتقد وربما هو الآلية الصحيحة لاستخدامها.

ولكن، وبما انك سألت عن كيفية القيام بذلك دون IPC (وأنا تحليل هذا يعني من دون مفاتيح السياق ونسخة)، يمكنك ببساطة إنشاء شريحة الذاكرة المشتركة بين العمليتين:

fd = shm_open("/my_shmem", O_RDWR| O_CREAT, S_IWUSR);
if(fd == -1) abort(); 
ftruncate(fd, SHMEM_SIZE); 
p = mmap(NULL, SHMEM_SIZE, PROT_WRITE |  PROT_READ, MAP_SHARED, fd, 0); 
if(p == MAP_FAILED) abort()

والآن ص ديه عنوان لشريحة الذاكرة المشتركة المشتركة من قبل اثنين (أو أكثر) العمليات.

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

وابتهاج، gby

ونظرة على كيفية تنفيذ إمبلاير وإمبلاير مستخدمي SMPlayer. ام بلاير يترجم ويظهر الفيديو، وإمبلاير مستخدمي SMPlayer هو (اختياري) واجهة المستخدم الرسومية.

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