2
我想禁用按CTRL_C發送的信號,如SIGINT
,以及其他會終止JVM的信號。我讀到-Xrs選項這裏關於JVM信號處理
但它似乎對JVM /進程終止沒有任何影響。 我推出了像java -Xrs -jar avoid-signals.jar
這樣的程序罐。
我在linux上。 有何建議?
我想禁用按CTRL_C發送的信號,如SIGINT
,以及其他會終止JVM的信號。我讀到-Xrs選項這裏關於JVM信號處理
但它似乎對JVM /進程終止沒有任何影響。 我推出了像java -Xrs -jar avoid-signals.jar
這樣的程序罐。
我在linux上。 有何建議?
爲Xrs的文檔說
由Java VM減少使用操作系統信號。
這意味着JVM只安裝較少的自己的信號處理程序。較少的信號處理程序意味着更多的信號通過它們的default action處理。在很多情況下會導致進程終止。
信號可以通過signal mask抑制,通過signal handler或各種其他方式處理。
目前JDK不提供公共API,但您可以使用內部不支持的內部(sun.misc.SignalHandler
)或jnr-posix。
或者,如果你主要關心的Ctrl + C鍵和其他按鍵操作,並沒有真正的信號本身就可以通過nohup java -jar ... > /dev/null &
分離從控制檯的Java進程你爲什麼要這麼做?我懷疑不可能做到正確 - 例如,SIGKILL不能簡單地被捕獲和忽略 - 它會*導致進程終止,除非它在不中斷的睡眠中,無論是哪種方式進程不會做任何有用的事情收到SIGKILL後。 – sisyphus
修復措詞,標記 – fluter