我们正在从标准输入读取一个文件到file_buffer
,然后单步执行一个方法more
。
一旦我们使用system("stty cbreak -echo");
,输出就会打印“stty: stdin is not a terminal”,并且不会将我们的终端设置为我们要求的设置。
这个问题只在我们使用标准输入时存在。如果我们使用文件参数,程序可以正常工作——终端设置被设置,并且没有错误消息。
所以,这没关系:myprogram file1.txt
但这不是:myprogram < file1.txt
无论哪种方式,内容都在被使用之前被读入file_buffer
。如果我们从标准输入获取输入,那么使用 stty 到底有什么问题?