簡體   English   中英

修改控制C命令信號以允許輸入

[英]Modify Control C Command Signal to Allow Input

在命令提示符下按下Control C時,是否有可能中斷此信號並提示用戶輸入,以確認是否要退出程序? 我知道有信號中斷,但不知道如何修改信號以允許輸入。

String user;
Scanner input = new Scanner(System.in);

try {
      [...] // Some code
    }
catch(NoSuchElementException e) {
 System.out.println("You have chosen to exit the program using Control C.\n");
 System.out.print("Are you sure you want to exit? Type Yes or No.");
 user = input.nextLine();
 if(user.equals("yes")) {
    System.exit(0);
 }
 else { 
  [...] // Return to the main menu
 }

目前,此代碼捕獲Control C信號,輸出字符串:“您確定要退出嗎?[..]”但是然后拒絕接受來自用戶的輸入。 等待一秒鍾,然后程序退出而不是從用戶那里獲得輸入以確認他們的決定。

但是,我希望代碼在Control C激活時請求用戶輸入,如果是,則退出程序,否則返回主菜單,它似乎無法按預期工作。

簡短的回答是:你真的不應該這樣做。 沒有可移植的方法來阻止中斷信號退出Java應用程序。

更長的答案是使用內部類可能是可能的,例如sun.misc.Signalsun.misc.SignalHandler 由於這些類不能跨JVM實現移植,並且可能在以后的版本中更改,因此應避免使用它們。

你應該做的是提供退出應用程序的另一種標准方法,例如輸入quit並在接收輸入時需要確認。

如果你真的想避免用戶退出ctrl+c你可以嘗試用-Xrs運行java,這應該禁用控制台信號的處理(注意:我沒有測試過這個,我不確定它是如何工作的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM