bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


java_cmd

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
java_cmd [2023/10/19 16:12]
enric_mieza_sanchez [Codi d'exemple] deprecated runtime
java_cmd [2023/10/19 16:54] (actual)
enric_mieza_sanchez simplifació i millora
Línia 12: Línia 12:
 ===== Codi d'exemple ===== ===== Codi d'exemple =====
  
-En aquest codi d'exemple veurem com llançar 2 comandes per controlar un display extern (cal instal·lar comandes adients).+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).
  
- +<file java jcmd.java>
-<WRAP important> +
-En aquest exemple emprem la llibreria ''java.lang.Runtime'' que està marcada com a DEPRECATED a partir de Java 18. Per tant, aquest exemple només és vàlid amb versions menors de Java < 18. +
-</WRAP> +
- +
-La 1a comanda la fem durar 5 segons (després la destruïm) i la 2a durarà 15 segons. +
- +
-<code java>+
 import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
 import java.lang.Runtime; import java.lang.Runtime;
 import java.lang.Process; import java.lang.Process;
  
-class jcmdtext+class jcmd
 { {
     public static void main(String args[])     public static void main(String args[])
Línia 32: Línia 25:
         System.out.println("Iniciant comanda...");         System.out.println("Iniciant comanda...");
                  
-        String imageCmd = "led-image-viewer -C --led-cols=64 --led-rows=64 --led-slowdown-gpio=4 /home/super/Downloads/ietilogo.jpeg --led-no-hardware-pulse"+        String cmd[] {"tail","-f","/var/log/syslog"}
-         +
-        String text = "Un string prou llarg per provocar que rodi en el display... IETI Power!"+
-        String textCmd = "text-scroller -f /home/super/bitmap-fonts/bitmap/scientifica/scientifica-11.bdf --led-cols=64 --led-rows=64 --led-slowdown-gpio=4 --led-no-hardware-pulse '"+ text +"'"; +
-        +
         try {         try {
 +            // objecte global Runtime
             Runtime rt = java.lang.Runtime.getRuntime();             Runtime rt = java.lang.Runtime.getRuntime();
  
-            // execute image command +            // executar comanda en subprocess 
-            Process p = rt.exec(imageCmd); +            Process p = rt.exec(cmd); 
-            // wait some time to be executed+            // donem un temps d'execució
             TimeUnit.SECONDS.sleep(5);             TimeUnit.SECONDS.sleep(5);
-            // kill subprocess +            // el matem si encara no ha acabat 
-            p.destroy();+            if( p.isAlive() ) p.destroy(); 
 +            p.waitFor(); 
 +            // comprovem el resultat de l'execució 
 +            System.out.println("Comanda 1 exit code="+p.exitValue());
  
-            // execute text command 
-            Process p2 = rt.exec(textCmd); 
-            // wait some time to be executed 
-            TimeUnit.SECONDS.sleep(15); 
-            // kill subprocess 
-            p2.destroy(); 
         } catch (Exception e) {         } catch (Exception e) {
             e.printStackTrace();             e.printStackTrace();
Línia 61: Línia 49:
     }     }
 } }
-</code>+</file>
  
  
java_cmd.1697731943.txt.gz · Darrera modificació: 2023/10/19 16:12 per enric_mieza_sanchez