簡體   English   中英

是否可以在 Java 中捕獲 SIGWINCH?

[英]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.

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