[英]Is it possible to capture SIGWINCH in Java?
我有一個控制台應用程序,我想對終端大小的變化做出反應。 在 Linux/UNIX 中,這是通過 SIGWITCH 信號完成的:
SIGWINCH 28 Window 更改。 WINCH 信號在其控制終端更改大小時發送到進程,例如,如果您在 window 管理器中調整它的大小。 4.3 BSD,Sun 來源: https://www.computerhope.com/unix/signals.htm
在 Java SE 文檔中,我可以找到與大多數常見信號相關的信息,但沒有提及 SIGWINCH。 資料來源: https://docs.oracle.com/javase/10/troubleshoot/handle-signals-and-exceptions.htm
有可能捕捉到這樣的信號嗎?
是的。
使用sun.misc.Signal
和 static handle
function:
jshell> import sun.misc.Signal;
jshell> Signal.handle(new Signal("WINCH"), s -> System.out.println(s.getName() + "(" + s.getNumber() + ")"));
如果您調整 window 的大小,您將看到此處理程序被調用。 請注意,這是 JVM 特定的,這是在openjdk 16.0.1
上測試的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.