代码之家  ›  专栏  ›  技术社区  ›  Abhishek Roy

如果其他Java程序正在运行(关闭),则要监听Java程序

  •  -1
  • Abhishek Roy  · 技术社区  · 6 年前

    我有两个Java程序: 演示1.java 演示2.java

    演示2.java

    public class Demo2 extends Thread{
      public void run(){
        while(true){
         System.out.println("Demo2 is running");
        }
      }
    }
    

    我想:

    1. 运行演示2
    2. 当demo2运行时运行demo1
    3. 从demo1中了解demo2是否正在运行。

    我该怎么写 演示1.java ?

    1 回复  |  直到 6 年前
        1
  •  0
  •   J. Lorenzo    6 年前

    如果我明白了,你有两个程序,意思是两个独立的线程。所以您可以像这样访问进程列表:

    窗户:

    try {
        Process proc = Runtime.getRuntime().exec("process.exe");
        BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));
        OutputStreamWriter oStream = new OutputStreamWriter(proc.getOutputStream());
        oStream.write("process where name='process.exe'");
        String line;
        while ((line = input.readLine()) != null) { 
            if (line.contains("process.exe")) 
                return true; 
        } 
        input.close(); 
    } 
    catch (Exception ex) { 
        // handle error 
    }
    

    Linux:

    try {
        Process p = Runtime.getRuntime().exec(new String[] { "bash", "-c", "ps aux | grep process" });
        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while ((line = input.readLine()) != null) {
            if (line.contains("process")) {
                // process is running
            }
        }
    }
    catch (Exception e) {
        // handle error
    }
    

    希望有帮助。