كيف يمكنني الخروج من قذيفة الأمر بعد استدعاء برنامج نصي بيرل؟

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

  •  20-09-2019
  •  | 
  •  

سؤال

إذا قمت بتشغيل برنامج نصي بيرل من موجه الأوامر (C: Windows System32 cmd.exe)، كيف يمكنني الخروج من موجه الأوامر بعد انتهاء البرنامج النصي المنفذ.

حاولت system("exit 0") داخل البرنامج النصي PERL ولكن هذا لا يخرج من قذيفة موجه CMD من حيث يتم تشغيل البرنامج النصي Perl.

لقد حاولت أيضا exit; أمر في البرنامج النصي PERL، ولكن هذا لا يعمل أيضا.

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

المحلول

إذا كنت تبدأ في تشغيل Command Shell لتعمل البرنامج النصي PERL، فينبغي أن يعمل إجابة arkaitz jimenez (صوتت لصالحها)

إذا لم يكن كذلك، يمكنك إنشاء ملف دفعي مثل runmyscript.bat, ، مع المحتوى:

@echo off
perl myscript.pl
exit

ال exit سينهي جلسة الشل (وكأثر جانبي، إنهاء البرنامج النصي الدفعة نفسه.)

نصائح أخرى

حاول تشغيل البرنامج النصي PERL مع سطر أوامر مثل هذا:

perl script.pl & exit

ستبدأ Ampersand الأمر الثاني بعد انتهاء الأول. تستطيع ايضا استخذام && لتنفيذ الأمر الثاني فقط إذا نجح أول (رمز الخطأ 0).

هل جربت cmd.exe /C perl yourscript.pl ?

بالنسبة الى cmd.exe /? /C ينفذ الأمر المحدد حسب السلسلة ثم ينتهي.

يمكنك بدء البرنامج في نافذة جديدة باستخدام بدء قيادة DOS. وبعد إذا اتصلت بذلك /B ثم لا يتم إنشاء نافذة إضافية. ثم يمكنك الاتصال بالخروج لإغلاق النافذة الحالية.

هل هذا خدعة؟

يمكنك إرسال إشارة إلى قذيفة الأصل من بيرل:

 kill(9,$PARENT_PID);`

لسوء الحظ، ال getppid() لا يتم تنفيذ الدالة في بيرل على نظام التشغيل Windows، لذلك عليك أن تعرف على PID القذيفة الأصل عبر الوسائل الأخرى. أيضا، قد لا يكون إشارة # 9 هو الخيار الأفضل.

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