import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Test {
/**
* 用于判断退出的标识语
*/
private final static String EXIT_IDENT ="BRIDGE UNEXPECTED DISCONNECTED FROM QUEUE AND TOPICS";
public static void main(String[] args) {
new Test().check();
}
/**
* 判断可执行文件是否正常运行,如果没有运行则调用重启方法
*/
public void check(){
BufferedReader bufferedreader = null;
try {
Process proc = Runtime.getRuntime().exec(" tasklist /fi \" imagename eq msxRun.exe \" ");
bufferedreader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = bufferedreader.readLine()) != null) {
if (!line.contains("msxRun.exe")) {
//重启前停顿1秒
Thread.sleep(1000);
restrat();
}
}
} catch (Exception ex) {} finally {
if (bufferedreader != null) {
try {
bufferedreader.close();
} catch (Exception ex) {}
}
}
}
/**
* 重启方法
*/
public void restrat() {
try {
Process p = Runtime.getRuntime().exec("d:/msxRun.exe");
BufferedReader read = new BufferedReader(new InputStreamReader(p.getInputStream()));
String str = null;
while ((str = read.readLine()) != null) {
System.out.println(str);
if (str.contains(EXIT_IDENT)) {
//通知对方停止并退出
Socket socket = null;
PrintStream ps = null;
try {
// 使用端口2525实例化一个本地套接字
socket = new Socket(Constants.SERVER_ADDRESS, Constants.SERVER_PORT);
ps = new PrintStream(socket.getOutputStream());
// 将ps指向soc的输出流
ps.println("EXIT");
ps.flush();
} catch (IOException e) {
} finally {
ps.close();
socket.close();
}
}
}
System.out.println("====================================");
//递归调用
check();
} catch (Exception e) {
e.printStackTrace();
}
}
}