Ho un compito semplice che deve attendere che qualcosa cambi sul filesystem (è essenzialmente un compilatore per i prototipi). Quindi ho un semplice ciclo infinito con un sonno di 5 secondi dopo il controllo dei file modificati.Rileva tasto premuto (non bloccante) senza getc/entra in Ruby
loop do
# if files changed
# process files
# and puts result
sleep 5
end
Invece del Ctrl+C
saluto, io preferirei essere in grado di verificare e vedere se un tasto è stato premuto, senza bloccare il ciclo. Essenzialmente ho solo bisogno di un modo per dire se ci sono pressioni dei tasti in arrivo, quindi un modo per afferrarle finché non viene raggiunto un Q, quindi uscire dal programma.
Quello che voglio è:
def wait_for_Q
key_is_pressed && get_ch == 'Q'
end
loop do
# if files changed
# process files
# and puts result
wait_for_Q or sleep 5
end
Oppure, si tratta di qualcosa di Ruby semplicemente non fare (bene)?
Purtroppo io sono su finestre, e questo genera :: EBADF Errno, o errore di bad-file. Indagherò le mie opzioni. –
Prova a catturare EBADF con EINTR e EAGAIN- potrebbe essere solo un errore transitorio finché non digiti effettivamente un input (non sicuro, non su Windows) – rampion
Posso fare lo stesso su C o PHP o Perl ?? qualsiasi codice là fuori? –