(unix/C) "stty: stdin isn't a terminal" when using system() function -


we're reading file stdin file_buffer, , stepping method more.

as use system("stty cbreak -echo");, output prints "stty: stdin isn't terminal" , doesn't set our terminal settings asked for.

this problem exists when use standard in. if use file argument, program works fine -- terminal settings set, , there no error message.

so, okay: myprogram file1.txt

but not: myprogram < file1.txt

either way contents being read file_buffer before being used @ all. heck wrong using stty if we're taking input stdin??

when standard input file, isn't terminal, setting terminal attributes on stty's standard input won't work.

it sounds daft @ first, find can use either stdout or stderr input stty , adjust terminal. therefore:

system("stty cbreak -echo <&2"); 

is set terminal characteristics. if have gnu version of stty, use:

system("stty -f /dev/stderr cbreak -echo"); 

or substitute /dev/stdout or /dev/tty /dev/stderr. use of named devices instead of &2 in redirection in first variant.


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -