====== Execució de comandes del sistema operatiu des de Java ====== Des de [[Java]] podem executar comandes en un //subprocess// en la //shell// del [[sistema operatiu]]. Referències: * ...TODO... {{tag> #FpInfor #Dam #DawMp03 #DamMp03 #DamMp06 #DamMp07 #DamMp09 java }} ===== Codi d'exemple ===== Donem un timout de 5 segons perquè la comanda s'executi, després la matem si encara no ha acabat (a l'exemple justament hem posat una comanda ''tail -f /var/log/syslog'' que no acaba mai i bloqueja el procés per sempre). import java.util.concurrent.TimeUnit; import java.lang.Runtime; import java.lang.Process; class jcmd { public static void main(String args[]) { System.out.println("Iniciant comanda..."); String cmd[] = {"tail","-f","/var/log/syslog"}; try { // objecte global Runtime Runtime rt = java.lang.Runtime.getRuntime(); // executar comanda en subprocess Process p = rt.exec(cmd); // donem un temps d'execució TimeUnit.SECONDS.sleep(5); // el matem si encara no ha acabat if( p.isAlive() ) p.destroy(); p.waitFor(); // comprovem el resultat de l'execució System.out.println("Comanda 1 exit code="+p.exitValue()); } catch (Exception e) { e.printStackTrace(); } // finish System.out.println("Comandes finalitzades."); } }