This should be rather simple, but I don't see anything helpful in JavaDocs.
What I need is to run some external process from my Java code and then be able to monitor if this process has been shutdown or not. In other words, I want to be able to reliably determine whether or not my external process was not ended by user.
If no cross platform solution exists, I will accept anything working under Linux.
My current snippet of code:
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder("some proces name");
try {
Process p = pb.start();
// p.isRunning(); <- now, that would be helpful :-)
} catch (IOException e) {
e.printStackTrace();
}
}
Start a new Thread which calls Process.waitFor()
and sets a flag when that call returns. then, you can check that flag whenever you want to see if the process has completed.
public class ProcMon implements Runnable {
private final Process _proc;
private volatile boolean _complete;
public boolean isComplete() { return _complete; }
public void run() {
_proc.waitFor();
_complete = true;
}
public static ProcMon create(Process proc) {
ProcMon procMon = new ProcMon(proc);
Thread t = new Thread(procMon);
t.start();
return procMon;
}
}
(some boilerplate omitted).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With