CreateProcess ، العملية لا تنتهي عند إعادة توجيه الأمراض المنقولة جنسيا/في/err
-
24-09-2019 - |
سؤال
أحاول استخدام CreateProcess لإطلاق نص PowerShell من داخل طلبي.
لقد استخدمت مثال Microsoft (http://msdn.microsoft.com/en-us/library/ms682499(vs.85).aspx) لإنشاء عملية الطفل وإعادة توجيه المعيار/in/err/err.
المشكلة الوحيدة المتبقية لحلها هي السبب في أن عملية الطفل (PowerShell) لا تنتهي بعد تنفيذ الأمر.
إذا قمت بتنفيذ عملية PowerShell (مع الأمر) cmd.exe ، فإنها تنفذ وتخرج ، مع إغلاق العملية.
الطريقة الوحيدة لإغلاق عملية PowerShell في الوقت الحالي هي تشغيل TerminateProcess على المقبض ، ولكن هذا يبدو وكأنه الملاذ الأخير.
المحلول
هل والديك يقرأ stdout الطفل بالكامل؟ إذا لم تقرأ كل شيء ، فأعتقد أن الطفل سوف يعلق. أيضًا ، إذا كان البرنامج النصي يتوقع إدخالًا ، فسيتعين عليك كتابة شيء إلى stdin للطفل وإلا فإنه سيتم تعليقه. يمكنك إرفاق Windbg بالطفل ومعرفة أين هو معلق ؛ ربما سيعطيك فكرة عن مكان النظر.
نصائح أخرى
في Linux إذا لم يتم إعادة توجيه الإخراج بالكامل وقتل عملية الوالدين ، يتم قتل عملية الطفل أيضًا. لذلك يمكنك التحقق من وثائق Windows التي تشير إلى إعادة ترتيب عملية الطفل عندما يتم قتل الوالد.