كيف يمكنني التخلص من جافا العمليات الطفل عندما جافا مخارج التطبيق/تعطل ؟
-
06-07-2019 - |
سؤال
انا إطلاق عملية طفل في جافا على النحو التالي:
final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);
الآن يعمل في الخلفية.كل خير و بخير
إذا كان البرنامج الآن تعطل (عليه هو لا يزال في ديف :-)) عملية طفل لا يزال يبدو أن تسكع.كيف يمكنني جعله تلقائيا عند الوالد عملية جافا يموت ؟
إذا كان ذلك يساعد ، أنا باستخدام نظام التشغيل Mac OS X 10.5
المحلول
كما قلت ، addShutdownHook هو الطريق للذهاب.
ولكن:
لا يوجد أي ضمان من أن اغلاق السنانير يتم تنفيذها إذا كان البرنامج ينتهي.شخص ما يمكن أن تقتل عملية جافا و في حالة إغلاق هوك لن ينفذ.(كما قال في هذا لذلك السؤال)
بعض المكتبات القياسية الخاصة بهم السنانير التي قد تعمل قبل لك.
حذار من المآزق.
وثمة إمكانية أخرى التفاف برنامج java الخاص بك في الخدمة.
نصائح أخرى
وعملت بها نفسي بالفعل. أود أن أضيف ربط الاغلاق، كما يلي:
final String[] cmd = {"<childProcessName>"};
final Process process = Runtime.getRuntime().exec(cmd);
Runnable runnable = new Runnable() {
public void run() {
process.destroy();
}
};
Runtime.getRuntime().addShutdownHook(new Thread(runnable));
لا تنتمي إلى StackOverflow