Masalah: Bagaimana untuk mengendalikan peristiwa Ctrl C dalam aplikasi CLI Java untuk mengelakkan penamatan proses?
Konteks: Gelagat lalai untuk Ctrl C dalam aplikasi CLI adalah untuk menamatkan proses, tetapi untuk aplikasi tertentu, mungkin perlu memintas isyarat ini dan melaksanakan tindakan tertentu sebaliknya.
Penyelesaian:
Untuk memintas Ctrl C dalam aplikasi Java CLI berbilang platform, anda boleh menggunakan salah satu kaedah berikut:
Waktu Jalan Cangkuk Tutup:
Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { // Your shutdown code that handles Ctrl+C } });
Kaedah ini akan melaksanakan kod anda apabila JVM dimatikan akibat daripada Ctrl C. Walau bagaimanapun, ia mungkin tidak memberikan kawalan sepenuhnya ke atas pengendalian isyarat.
SignalHandler:
public class SignalHandler { public static void registerCtrlCHandler() { try { Signal.handle(new Signal("INT"), (s) -> { // Your Ctrl+C handling logic here }); } catch (Exception e) { // Handle exception } } }
Menggunakan SignalHandler dari pakej sun.misc, anda boleh memintas isyarat SIGINT, yang dicetuskan oleh Ctrl C dan melakukan tindakan tersuai dalam aplikasi anda . Ini memberikan kawalan yang lebih terperinci ke atas pengendalian isyarat.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Ctrl C daripada Menamatkan Aplikasi Java CLI Anda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!