1

stdin から にファイルを読み込んでからfile_buffer、メソッドにステップインしますmore

を使用するとすぐsystem("stty cbreak -echo");に、出力に「stty: stdin は端末ではありません」と表示され、要求した設定に端末が設定されません。

この問題は、標準入力を使用する場合にのみ発生します。ファイル引数を使用すると、プログラムは正常に動作します。端末設定が設定され、エラー メッセージは表示されません。

だから、これは大丈夫です:myprogram file1.txt

しかし、これはそうではありません:myprogram < file1.txt

file_bufferいずれにせよ、コンテンツはまったく使用される前に読み込まれます。標準入力から入力を取得している場合、stty を使用することの一体何が問題なのですか??

4

2 に答える 2

1

入力リダイレクトまたはパイプを使用する場合は、TTYstdinではありません。

isattyそれを確認するために使用できます。

于 2013-04-05T17:54:12.933 に答える