Newsgroup: it.comp.os.linux.iniziare
Titolo: Terminare esecuzione con control-c

In una finestra konsole, gira un bash in cui le istruzioni sono:
 
while true ; do
  ....
  parametri = ......
  ....
  programma[1] $parametri
done
 
Il programma[1], se non termina da solo alla fine (e puó impiegare anche 1
ora), si interrompe solo (a meno di killarlo da "fuori") con control-c.
Durante la sua esecuzione, vengono visualizzati in continuazione sul terminale
gli output in formato testo.
 
Ovviamente, nel bash vi sono istruzioni per uscire dal loop!
 
É possibile, interrompere solo il programma[1] mentre é in esecuzione con
control-c, senza interrompere anche il ciclo while e di conseguenza il
chiudersi della finestra konsole?
 
Alternativa, purché poi sia possibile trasferire i $parametri e vedere sul
terminale gli output di testo, eseguirlo in una sotto-shell?. Tanto non deve
dare output riutilizzabili da altri programmi...
 
 
P.S. debian lenny con kde 3.5
 
-- 
+---------------------------------------------------------------------------+
|    La paranza e' la danza di una stronza che, sull'isola di Ponza,        |
|    si tirava  la patonza.                                                 |
+-----#21--------------------Campagna contro le pubblicita` idiote.---------+

 chiudersi della finestra konsole?
 
Certo, kill è lì apposta.
Termini il PID del programma, e non quello della sessione di bash, che 
continuerà.
 
-- 
Massimo Bacilieri AKA Crononauta

> ora), si interrompe solo (a meno di killarlo da "fuori")
 
Volevo spere, se era possibile "incapsulare" il programma in modo da terminare
solo lui senza di estendere il control-c anche alla parte "padre".
 
Ciao e buon anno.
 
 
-- 
+---------------------------------------------------------------------------+
|  Un tacchino all'agnello: Buona pasqua!                                   |
|  L'agnello al tacchino: Vaffaculo, buon Natale!                           |
+-----#23--------------------Campagna contro le pubblicita` idiote.---------+

 il chiudersi della finestra konsole?
 
devi scrivere un signal handler che killa il processo ed assegnarlo 
(tramite trap) al segnale INT (2)
 
 
 
 


Facebook: Massimo Bacilieri

 (tramite trap) al segnale INT (2)
 
OK. Inteso, vedi anche risposta a Crononauta.
 
-- 
+---------------------------------------------------------------------------+
| Aho e che palle, so' tre giorni che ci sminchiazzi le cosiddette!         |
| Ma la sera ci dai di get/put o ti limiti all'handshaking e ti vieni a     |
| sfogare co' noi?                                                          |
+-----#32--------------------Campagna contro le pubblicita` idiote.---------+

 che sono altri segnali di interruzione.
 
Il programma non é mio, e non ci metto le mani.
Il fatto é che per interromperlo dall'esterno, vuol dire aprire un'altra
konsole, dare ps per vedere il pid e poi dare il kill e poi richiudere la
konsole.
 
Ho girato in giro per capire meglio il comando trap (no non ho un "man trap"),
ma non ho trovato chiarezza...
Sopratutto, il fatto che mettendo uno spazio tra le virgolette doppie al
comando trap, scaturisce l'effetto voluto.
 
      $ trap 'ls -l' SIGUSR1[Invio]
      Se la shell riceve un segnale SIGUSR1 esegue ls -l.
 
      $ trap '' SIGUSR1[Invio]
      La shell e tutti i processi figli ignorano il segnale SIGUSR1.


 trap"), ma non ho trovato chiarezza...
 
Non hai un man trap perchè è un builtin della bash, quindi hai man bash.
Ma vista la poca chiarezza di cotanto(!) manuale, ti consiglio una guida 
comprensibile:
 
http://tldp.org/LDP/Bash-Beginners-Guide/html/chap_12.html
 
 
ciao