2012-03-20 9 views
10

In Ruby ho il seguente:Rubino - Hide "^ C" sul Interrupt

# Trap Interrupts 
trap("INT") do 
    puts "Shutting down..." 
    exit 
end 

Quando interrompo il programma, il seguente viene stampato (Mac OSX Lion):

^CShutting down ...

C'è un modo per nascondere ^C dall'interno di Ruby?

+3

Iniziare il messaggio di uscita con una 'C' (qualcosa come 'Collegamento di chiusura ...') e quindi omettere la 'C' :) (Ancora avrebbe il '^' però) – itdoesntwork

risposta

9

Se i caratteri di controllo vengono emessi è una proprietà della tty che si sta utilizzando. stty -echoctl è il modo Unix per disabilitare l'eco dei caratteri di controllo. Puoi eseguire questo comando dallo script Ruby e ottenere lo stesso effetto se stai usando un sistema Unix-ish.

3

Ho trovato che nei miei programmi Python su terminali Linux e Mac OS X posso nascondere il^C avviando il messaggio con un ritorno a capo (\ r). Sembra un hack ma funziona bene.