سياسة مهمة PID في Windows / باستخدام PIDS لتسمية الملفات المؤقتة

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

  •  13-09-2019
  •  | 
  •  

سؤال

  1. ما هي سياسة مهمة PID في Windows؟ يشير أشواط المتكررة من عملية الاتصال _GetPID () إلى مهمة غير متسلسلة (3548،3344،3628،2748،4872،2360).

  2. بالنظر إلى التنازل غير المتسلسل الملحوظ من PIDS، هل من الممكن تنفيذ عملية مختلفة مع نفس PID للتنفيذ عن كثب في الوقت المناسب من بعضها البعض؟ من الواضح أن العمليات لن تعمل بشكل متزامن.

  3. هل من غير الحكمة استخدام PID في تسمية الملفات المؤقتة؟

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

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

هناك طرق أخرى لإضافة متانة مثل استخدام GUID للملفات المؤقتة، فقط باستخدام الدلائل النظيفة لملفات TEMP، أو التحقق من عدم وجود ملفات تشارك نفس اسم ملف الإخراج الهدف. يجب توظيف بعض هذه التقنيات نظرا لأن PIDs من المؤكد أن تتكرر تشغيل الجهاز أو إذا تم ترك الجهاز قيد التشغيل لفترة طويلة من الوقت.

ينبع السؤال في الغالب من فضولي فيما يتعلق لماذا تخصيص Windows PIDS بطريقة مختلفة ثم * Nix.

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

المحلول

باستخدام PID بهذه الطريقة مشكلة. لقد رأيت البرامج التي تستخدم PID بالاقتران مع وقت UTC الحالي عند تسمية الملفات حتى ينتهي بك الأمر مع الملفات المسماة foo_55145_4a3667d3.log. وبعد الخيار الآخر يستخدم FILE_ATTRIBUTE_TEMPORARY و FILE_FLAG_DELETE_ON_CLOSE خيارات في dwFlagsAndAttributes المعلمة إلى CreateFile().

نصائح أخرى

تأتي معرفات العمليات ومعرفات الخيط من نفس المسبح على Windows. سيعيد النظام إعادة استخدام موضوع ومعرفات العملية على الفور.

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