2015-11-15 3 views
5

stdinnon-canonical mode Linuxで読むことのできる方法はありますか?このコードはにユーザーを待ちstdinから非標準的な方法で読み込むことはできますか?

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

:非標準入力がSTDINread()への呼び出しは、すぐに1を試みることによって見ることができるように、デフォルトの動作ではありません、ユーザーの種類、として返還しなければならないことを意味しを返信bufferの内容を印刷します。ユーザーが入力したときに印刷するのが望ましい動作です。 Stdin(上のコードでstdin()呼び出しによって返された構造体)のドキュメントでは、このデフォルトの動作をどのように変更できるかについては言及していません。

答えて

1

いいえ、外部クレートや安全でないFFIコードはありません。あなたはおそらくtermios関数を使いたいと思うでしょう。具体的には、ICANONおよびtcsetattrを参照してください。箱nixにはこれらの機能のバインディングがあります。 Rustでそれらを使用する方法の例については、hereを参照してください。