Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Esercizio 2 Script bash o Python: (10 punti):
- #Scrivere uno script bash o un programma python lanciatutto che esegua in modo concorrente tutti i file
- #“eseguibili” della directory corrente passando ad ognuno gli stessi parametri (quelli usati nell'invocazione di
- #lanciatutto).
- #NB: eseguibili=che possono essere eseguiti, script o binari
- #modo concorrente=il programma attiva tutti un processo per ogni file eseguibile (senza aspettare che termini il
- #precedente per lanciare il successivo).
- #Il programma deve terminare quando tutti i processi attivati sono terminati.
- #!/bin/bash
- dir=${1:-"."}
- stampa() {
- echo -e "$1 \n"
- }
- eseguidir() {
- pushd $1 > /dev/null
- for i in `ls`; do
- if [[ -f $i ]]; then
- fl=`head -n 1 $i`
- stampa "TROVATO FILE `file $i`"
- if [[ ${fl:0:2} == "#!" ]]; then
- stampa "eseguo: ${fl:2} $i &"
- ${fl:2} $i &
- elif [[ ${i##*.} == "c" ]]; then
- fn=${i%.*}
- stampa "eseguo: gcc -o ${fn} $i && chmod +x ${fn} && ./${fn} &"
- gcc -o ${fn} $i && chmod +x ${fn} && ./${fn} &
- elif [[ `file $i` == *"ELF"*"executable"* ]]; then
- stampa "eseguo: chmod +x $i && ./$i &"
- chmod +x $i && ./$i &
- fi
- elif [[ $i != "." ]] && [[ $i != ".." ]]; then
- stampa "TROVATA DIRECTORY: $i"
- eseguidir $i &
- fi
- done
- for pid in `jobs -p`; do
- wait $pid
- done
- popd > /dev/null
- }
- eseguidir ${dir}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement