Newsgroup: it.comp.os.linux.iniziare
Titolo: chi definisce comportamento di Ctrl-C ?

Su un sistemino linux che sto creando non funziona il Ctrl-C
Se ad esempio faccio
$ ls -al
e voglio interrompere, non posso
Qualcuno sa dirmi da cosa dipende il comportamento di Ctrl-C ?
TIA

 Qualcuno sa dirmi da cosa dipende il comportamento di Ctrl-C ?
In breve: stty intr ^C
(puoi scrivere proprio l'accento circonflesso (quello sopra la ì) seguito
da C, stty è sufficientemente sveglio da capire che vuoi indicare Ctrl+C).
Meno in breve: la comunicazione tra un emulatore di terminale (xterm o
simili) e i processi che ci leggono i dati in input e ci scrivono i dati
in output (esempio: bash ed i processi da essa avviati, come ls) viene
mediata dal kernel, che tra le altre mille cose (stty -a per farsi
un'idea) si gestisce anche i vari caratteri che mandano segnali di
interruzione e sospensione a tutti i processi che hanno quel terminale
come terminale controllante.
Convenzione vuole che Ctrl-C faccia spedire SIGINT, Ctrl-Z faccia spedire
SIGTSTP, etc., ma il tutto è configurabile mediante il programma stty.
La gestione dei terminali veri ed emulati nei sistemi UNIX è complicata e
zeppa di retaggi di quando si usavano i terminali più vari collegati via
seriale, con o senza modem in mezzo. E c'è ancora perché c'è ancora chi
li usa.
Se vuoi approfondire, ti consiglio la Text-terminal-HOWTO 
(
http://www.tldp.org/HOWTO/Text-Terminal-HOWTO.html
).
-- 
  |   \    \  | ___|_  |_  |  ianezz a casa sua... :-)
  |  _ \  | \ | _|    /   /   Verba volant, scripta
 _|_/  _\_|  _|____|___|___|  manent, data corrupted

> In breve: stty intr ^C
l'ho messo in .bash_profile ma non cambia nulla
Il Ctrl-C ha a che fare con termcap o terminfo ?
TIA 

 l'ho messo in .bash_profile ma non cambia nulla
Casomai mettilo nel ~/.bashrc: gli emulatori di terminale (tipo xterm) non
avviano shell di login (quantomeno non normalmente), per cui
~/.bash_profile non viene eseguito, e comunque ogni copia di un emulatore
terminale in funzione si attacca ad una distinta linea seriale emulata,
per cui occorre effettuare l'impostazione per ciascuno di essi (in altre
parole, ogni volta che avvii una shell, dunque ~/.bashrc è un posto più
adatto).
Metterlo nel ~/.bash_profile funzionerebbe solo se fai il login da
console testuale, o da una macchina remota via ssh o simili, o se usi 
"su - nometuoutente" (col "-"), che son tutti casi in cui viene avviata
una shell di login.
Cmq, se adesso digiti "stty" e basta, dice qualcosa riguardo a "intr"?
Se non dice nulla, direi che è un bel mistero e non ti saprei aiutare.
Se invece dice qualcosa riguardo a intr di diverso da ^C, allora segui
quanto detto sopra. (e magari cerca in giro per /etc dove vien fatto
l'stty che rompe le uova nel paniere).
Quanto a terminfo, è una versione più moderna di termcap, ma in entrambi
i casi non dovrebbero aver nulla a che vedere col tuo problema visto che
il kernel non sa nulla di queste cose, e che per quanto un terminale sia
configurato in maniera bislacca, un ^C dovrebbe passare indenne sempre e
comunque.


 l'stty che rompe le uova nel paniere).
Può dipendere dalla shell ?
sh, bash, ash, busybox...
TIA

Ho trovato,
magari servirą a qualcun'altro...
Why doesn't Control-C work within my shell?
Job control will be turned off since your shell can not obtain a controlling 
terminal. This typically happens when you run your shell on /dev/console. 
The kernel will not provide a controlling terminal on the /dev/console 
device. Your should run your shell on a normal tty such as tty1 or ttyS0 and 
everything will work perfectly. If you REALLY want your shell to run on 
/dev/console, then you can hack your kernel (if you are into that sortof 
thing) by changing drivers/char/tty_io.c to change the lines where it sets 
"noctty = 1;" to instead set it to "0". I recommend you instead run your 
shell on a real console...
http://www.busybox.net/FAQ.html#job_control