2015-11-15 11 views
5

C'è un modo per leggere da stdin in non-canonical mode sotto Linux? Ingresso non canonica significa che le chiamate a read() su stdin rispediscono non appena l'utente, che non è il comportamento di default, come si può vedere cercando:Posso leggere da stdin in modo non canonico?

// Create a buffer 
let mut buffer :[u8; 1] = [0]; 
// Loops over the input from stdin, one character a time 
while io::stdin().read(&mut buffer).unwrap() > 0 { 
    println!("{:?}", buffer); 
} 

Questo codice attende che l'utente premere restituire per stampare il contenuto di buffer. Il comportamento desiderato sarebbe che stampasse mentre l'utente digitava. Nella documentazione per Stdin (la struttura restituita dalla chiamata stdin() nel codice sopra), non vi è alcun riferimento a come si potrebbe modificare questo comportamento predefinito.

risposta

1

No, non senza casse esterne o codice FFI non sicuro. Probabilmente vorrai utilizzare le funzioni termios. Nello specifico, vedere ICANON e tcsetattr. La cassa nix ha associazioni per queste funzioni. Vedi here per un esempio su come usarli in Rust.

Problemi correlati