Exercicis: Programació de processos
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 aquest exemple 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 ConsumeLineMultiProces
que llance
múltiples processos utilitzant el programa consume_line.sh
en diferents configuracions.
Aquest script:
- Llegeix les línies d'un fitxer de text especificat com a primer argument (
$1
).
- Mostra per
stdout
cada línia llegida per pantalla, amb un retard de temps en segons, especificat com a segon argument ($2
).
Per redirigir el stdout
del subprocés al procés principal, podem utilitzar la funció
ProcessBuilder inheritIO()
.
Crea els processos amb consume_line.sh
amb els següents paràmetres:
Important
Situa tots els fitxers al directori CognomNom-PSP/files/ud1/
Info
Per cridar a aquest script, l'heu d'indicar la ruta com a programa en els paràmetres
del constructor ProcessBuilder
.
ProcessBuilder pb1 = new ProcessBuilder(
"wsl.exe",
"files/ud1/consume_line.sh",
"files/ud1/colors.txt",
"3"
).inheritIO();
El programa principal ha d'esperar a que tots els processos acaben.
Aleshores, 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 la comanda ping
sobre un host determinat amb un nombre de pings determinat.
El programa demanarà per teclat el nom del host i el nombre de pings a enviar.
El programa principal iniciara el procés ping
utilitzant la següent sintaxi:
ping -c <num_pings> <host>
El programa principal ha d'esperar a que el procés ping
acabe,
i mostrarà la següent informació:
- 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.