#!/usr/bin/perl
print "Hello World!\\n";
$SIG{TERM}=$SIG{INT}=\\&yoursub1;
#my$i=1;
#while(1){
$args = "INT";
$javaClassName = "TestPerl";
print "The args is $args:\\n";
print "The javaClassName is $javaClassName:\\n";
print "=== JavaCall START ===\\n";
@result = ("java", "$javaClassName", "$args");
system(@result);
print "=== JavaCall END ===\\n";
$retval = $? >> 8;
#}
print "Hello World End!\\n";
sub yoursub1{
print" exit soon ... \\n";
exit 0;
}
Java:
import sun.misc.Signal; | |||
import sun.misc.SignalHandler; | |||
/*** | |||
* java信号处理demo | |||
* @author jiang_qh | |||
* | |||
*/ | |||
public class SignalHandlerExample implements SignalHandler{ | |||
private SignalHandler oldHandler; | |||
public void handle(Signal signal) { | |||
System.out.println("Signal handler called for signal " | |||
+ signal); | |||
try { | |||
signalAction(signal); | |||
// Chain back to previous handler, if one exists | |||
if (oldHandler != SIG_DFL && oldHandler != SIG_IGN) { | |||
oldHandler.handle(signal); | |||
} | |||
} catch (Exception e) { | |||
System.out.println("handle|Signal handler" | |||
+"failed, reason " + e.getMessage()); | |||
e.printStackTrace(); | |||
} | |||
} | |||
public void signalAction(Signal signal) { | |||
System.out.println("Handling " + signal.getName()); | |||
System.out.println("Just sleep for 5 seconds."); | |||
try { | |||
Thread.sleep(5000); | |||
} catch (InterruptedException e) { | |||
System.out.println("Interrupted: " | |||
+ e.getMessage()); | |||
} | |||
} | |||
public static SignalHandler install(String signalName) { | |||
Signal diagSignal = new Signal(signalName); | |||
SignalHandlerExample instance = new SignalHandlerExample(); | |||
instance.oldHandler = Signal.handle(diagSignal, instance); | |||
return instance; | |||
} | |||
public static void main(String[] args) throws Exception{ | |||
SignalHandlerExample.install("TERM"); | |||
SignalHandlerExample.install("INT"); | |||
System.out.println("Signal handling example."); | |||
try { | |||
Thread.sleep(50000); | |||
} catch (InterruptedException e) { | |||
System.out.println("Interrupted: " + e.getMessage()); | |||
} | |||
} | |||
} |