Salta el contingut
 

Exercicis: Programació de processos

Joan Puigcerver Ibáñez

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Objectius

Conèixer i ser competent en el desenvolupament d'aplicacions que gestionen la comunicació entre processos.

Observacions

En aquests exercicis s'utilitza un script de Bash. Per tant, cal executar-lo mitjançant el Windows Subsystem for Linux (WSL).

Tot el codi font ha d'estar en el package ud1.exercises.

1. LaunchApplications

Crea el programa LaunchApplications que inicie les teues aplicacions preferides (navegador, reproductor de música, etc.).

2. ConsumeLineMultiProcess

Crea el programa ConsumeLineMultiProcess que llance múltiples processos utilitzant el programa consume_line.sh en diferents configuracions.

consume_line.sh
#!/bin/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 fa el següent:

  • Llegeix les línies d'un fitxer de text especificat com a primer argument ($1).
  • Mostra per stdout cada línia llegida, amb un retard en segons especificat com a segon argument ($2).

Per redirigir el stdout del subprocés al procés principal, pots utilitzar el mètode ProcessBuilder inheritIO().

Crea els processos amb consume_line.sh amb els paràmetres següents:

Situa tots els fitxers al directori CognomNom-PSP/files/ud1/.

Per cridar a aquest script, indica'n la ruta com a programa en el constructor de ProcessBuilder.

ProcessBuilder pb1 = new ProcessBuilder(
        "wsl.exe",
        "files/ud1/consume_line.sh",
        "files/ud1/colors.txt",
        "3"
    ).inheritIO();

El programa principal ha d'esperar que tots els processos acaben. Aleshores, ha de mostrar un missatge indicant que tots els processos han acabat.

System.out.println("Tots els processos han acabat.");

3. PingProcess

Crea el programa PingProcess que execute l'ordre ping sobre un host determinat amb un nombre de pings determinat. El programa ha de demanar per teclat el nom del host i el nombre de pings a enviar.

El programa principal ha d'iniciar el procés ping amb la sintaxi següent:

ping -c <num_pings> <host>

Després, ha d'esperar que el procés ping acabe i mostrar la informació següent:

  • Codi de retorn del procés.
  • Eixida estàndard i d'error del procés.
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.