<div class="page"> <div class="cover text-center"> <img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo"> # Consume Line <div class="text-end fit-content ms-auto my-3 mt-auto pt-3"> <p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p> <p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p> <p><strong>Curs:</strong> 2024/2025</p> </div> <div> <p class="fw-bold mb-0">Llicència: BY-NC-SA</p> <p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p> <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank"> <img class="mx-auto" src="/itb/images/license.png" alt="Licence"/> </a> </div><!--license--> </div><!--cover--> </div><!--page--> {:toc} # Objectius Desenvolupar una aplicació que llance varios processos i espere a que acaben. Tot el codi font ha d'estar en el package __ud1.exercises__. # Observacions En aquest exemple s'utiliza un script de Bash, per tant, cal executar-lo mitjançant el WSL ## ConsumeLineMultiProcess Crea el programa __ConsumeLineMultiProcess__ que llance diferents processos utilitzant el programa <a href="/itb/DAM-PSP/files/files/ud1/consume_line.sh" download="consume_line.sh">consume_line.sh</a> per diferents fitxers. ```bash FILENAME=$1 i=0 DELAY=1 if [ $# -gt 1 ]; then DELAY=$2 fi cat $FILENAME | while read line do echo "Process $$ - Line $i: $line" ((i++)) sleep $DELAY done ``` Aquest script llegeix les línies d'un fitxer de text i les mostra per __stdout__. Aquesta eixida s'ha de mostrar per __stdout__ del nostre programa Java. Per fer-ho, podem utilitzar la funció [ProcessBuilder inheritIO()](https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html#inheritIO()) Crea els processos amb __consume_line.sh__ amb els següents paràmetres: - __Fitxer__: <a href="/itb/DAM-PSP/files/files/ud1/colors.txt" download="colors.txt">colors.txt</a>, __Delay__: 3 segons. - __Fitxer__: <a href="/itb/DAM-PSP/UD1/practices/concessionari.csv" download="concessionari.csv">concessionari.csv</a>, __Delay__: 1 segons. - __Fitxer__: <a href="/itb/DAM-PSP/files/files/ud1/lorem.txt" download="lorem.txt">lorem.txt</a>, __Delay__: 2 segons. ```warning Situa tots els fitxers al directori <strong>/files/ud1/</strong> a partir de l'arrel del teu projecte. ``` _Example en Windows (WSL):_ Si guardeu _consume_line.sh_ i _colors.txt_ en la carpeta _files/_ en l'arrel del vostre projecte. - Si utilitzeu Ubuntu, no cal utilitzar el WSL. ```java ProcessBuilder pb1 = new ProcessBuilder("wsl.exe", "files/ud1/consume_line.sh", "files/ud1/colors.txt", "3").inheritIO(); ```