2015-11-15 10 views
5

Gibt es eine Möglichkeit, wie man von stdin in non-canonical mode unter Linux lesen könnte? Nicht-kanonische Eingabe bedeutet, dass Anrufe zu read() auf stdin werden, sobald der Benutzer tippt zurückkehren, die nicht das Standardverhalten ist, wie man durch den Versuch sehen:Kann ich in einer nicht-kanonischen Weise von stdin lesen?

// 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); 
} 

Dieser Code für den Benutzer wartet auf Drücken Sie , geben Sie ein, um den Inhalt von buffer auszudrucken. Das gewünschte Verhalten wäre, dass es so gedruckt wird, wie der Benutzer getippt hat. In der Dokumentation für Stdin (die Struktur, die von dem Aufruf stdin() in dem obigen Code zurückgegeben wird) gibt es keinen Verweis auf, wie man dieses Standardverhalten ändern konnte.

Antwort

1

Nein, nicht ohne externe Kisten oder unsicheren FFI-Code. Sie werden wahrscheinlich die termios Funktionen verwenden wollen. Speziell siehe ICANON und tcsetattr. Die Kiste nix hat Bindungen für diese Funktionen. Ein Beispiel für die Verwendung in Rust finden Sie unter here.

Verwandte Themen