Exercicis: Programació de processos
(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.