Exercicis: Programació de processos
Autor: Joan Puigcerver Ibáñez
Correu electrònic: j.puigcerveribanez@edu.gva.es
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.
|