20. september 2001 - 16:21
Der er
2 kommentarer og
1 løsning
Process timeout
Det jeg skal have lavet er en timeout på den process jeg fyrer af, så der bliver returneret true hvis programmet svarer false hvis ikke.
hvordan kan jeg det ?
jeg har lavet denne lille stump jeg godt vil have det ind i..
public Runtime rt = Runtime.getRuntime();
public Process pr;
public boolean getPdStatus() {
try {
rt.exec(\"/usr/lpp/pd/bin/pdls -F\");
return true;
} catch(IOException e) {
System.err.println(\"Wrong Command\");
return false;
}
}
20. september 2001 - 19:38
#2
Normalt er der ikke så meget rent IPC support i java :-) Når du har startet en separat process er der kun seks ting man kan gøre:
vente på at den terminerer
Terminere den
Aflæse dens termineringsstatus
Fodre data til dens input
Modtage dens output
Modtage dens fejlbeskeder.
Afhængig af programmet pdls -F som jeg ikke kender, så må det at den svarer betyde at den udskriver nogle ting til skærmen. Eller hvad, for så er svaret:
Process p = rt.exec(\"/usr/lpp/pd/bin/pdls -F\");
InputStream s = p.getInputStream();
Thread.sleep(x);
if (s.available() > 0 )
System.out.println(\"Some response has come up\");
Alternativt, det at den svarer kan også betyde at programmet kan køres, for så ville jeg lige lave en check:
File f = new File(\"/usr/lpp/pd/bin/pdls -F\");
if (!f.exists() || !f.isFile())
System.err.println(\"Go nood talking to this one.\");
Du kan iøvrigt også fra en Process undersøge, om den stadig er kørende med:
p.exitValue()
Hvis den smider en IllegalStateException, er den stadig kørende.
Jeg skal gøre dig opmærksom på, at der er ikke er noget som helst i specs som siger at processen skal se hverken synkron eller asynkron.