[Tech] Input da tastiera
Franco Bagnoli
franco.bagnoli@unifi.it
Mar 18 Mar 2003 09:42:26 CET
On Mon, 17 Mar 2003, Stefano wrote:
> Sto scrivendo un programmino in C e mi servirebbe leggere i tasti
> premuti senza dover aspettare di premere l'invio. Utilizzando
> getc(stdin) devo aspettare di aver premuto l'invio.
> Suggerimenti ?
usa ncurses.
Ma dipende anche da quello che vuoi fare. Io per esempio ho sviluppato una
utility (che non ho mai completato) per fare input di dati nei programmi
scientifici che tipicamente hanno una struttura tipo
main() {
initialize();
while(1) loop();
end();
}
e a volte ho bisogno di cambiare i dati mentre sta girando il loop. Invece
di controllare ad ogni passo del loop se c'è un tasto premuto, istallo un
handler di segnali (man signal)
#include <signal.h>
void stoph(int signal); /* gestisce l'input */
int stop=0;
main() {
signal(SIGUSR1,stoph);
initialize();
while (1) {
loop();
if (stop) {
input();
stop=0;
}
}
end()
}
void stoph(int a)
{
stop=1;
}
puoi comunicare un segnal al processo usando kill o anche con la
pressione di un tasto usando stty. Usare i segnali permette anche di
gestire un programma da parte di un altro programma, forse addirittura
via rete (?)
Dovrei mettere queste informazioni su
http://www.complex.unifi.it/WebComplex/bin/view/Software/IDEPerProgrammiSimulazione
--
Franco Bagnoli (franchino) <franco.bagnoli@unifi.it> (bagnoli@dma.unifi.it)
virtual location: Dipartimento di Energetica "S. Stecco"
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787
GPG Key fingerprint = 169D 9EA5 8FD3 7EDA E43A 9830 255F BCEC 0D63 3728
Maggiori informazioni sulla lista
flug-tech