سؤال

أنا أستخدم نظام لينكس mount(2) تعمل في عملية ذات ترابط واحد.لكن تركيب الأجهزة مثل الأقراص المضغوطة قد يستغرق بعض الوقت (أسوأ ما رأيته هو 40 ثانية!)قد يؤدي هذا إلى منع العملية من معالجة الأحداث الأخرى لفترة طويلة.

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

إن معرفة ما إذا كان الإجراء قد اكتمل لا يمثل مشكلة بالنسبة لي لأنني قرأت بالفعل أحداث kernel في نفس الموضوع.

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

المحلول

لا.دون إطلاق موضوع آخر أو fork()جي، عليك أن تنتظر mount() لكي ترجع.

نصائح أخرى

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

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

يمكنك السماح لعملية التثبيت بالعمل في الخلفية.تم إنشاء تشغيل شيء مثل:

system("mount -a ");

يفعل

system("mount -a &");

سيسمح هذا لك بإكمال عملية التركيب في الخلفية.

ولكن بعد النظر عن كثب، فإن هذا الحل لا يستخدم واجهة C ولكن واجهة النظام

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