Files
VisualSapfor/src/Repository/Server/DiagnosticSignalHandler.java

44 lines
1.6 KiB
Java
Raw Normal View History

2023-09-17 22:13:42 +03:00
package Repository.Server;
import org.apache.commons.io.FileUtils;
import sun.misc.Signal;
import sun.misc.SignalHandler;
import java.io.File;
import java.util.Date;
public class DiagnosticSignalHandler implements SignalHandler {
private SignalHandler oldHandler;
private SignalHandler handler;
public DiagnosticSignalHandler() {
}
// Static method to install the signal handler
public static void install(String signalName, SignalHandler handler) {
Signal signal = new Signal(signalName);
DiagnosticSignalHandler diagnosticSignalHandler = new DiagnosticSignalHandler();
SignalHandler oldHandler = Signal.handle(signal, diagnosticSignalHandler);
diagnosticSignalHandler.setHandler(handler);
diagnosticSignalHandler.setOldHandler(oldHandler);
}
private void setOldHandler(SignalHandler oldHandler) {
this.oldHandler = oldHandler;
}
private void setHandler(SignalHandler handler) {
this.handler = handler;
}
// Signal handler method
// Signal handler method
@Override
public void handle(Signal sig) {
System.out.println("Diagnostic Signal handler called for signal " + sig);
try {
FileUtils.writeStringToFile(new File("got SIG" + sig.getName() + " " + new Date().toString().replace(':', '_')), "");
handler.handle(sig);
// Chain back to previous handler, if one exists
if (oldHandler != SIG_DFL && oldHandler != SIG_IGN) {
oldHandler.handle(sig);
}
} catch (Exception e) {
System.out.println("Signal handler failed, reason " + e);
}
}
}