在我的ubuntu终端上,要退出任何实用工具的“手册页视图”(手册),我只需在键盘上单击'q‘,它就会立即退出。
我有一个简单的二进制读取器程序(显示字节级的值,包括十六进制和可打印的ASCII字符,类似于十六进制)。我用C编写了它,我编程它在一行上显示8个字节,然后在连续一行中显示8个字节。
理想情况下,我的程序每次按下"ENTER"时都需要打印下一行,而在键盘上按'q‘之后,就应该停止显示(进程应该退出/返回)。
我已经完成了第一部分(每次按ENTER显示下一行),但是第二部分有问题,因为许多STDIN函数只在单击"ENTER“之后才读取我的'q‘输入,这就是问题所在。
https://stackoverflow.com/a/68593092的回答告诉我,STDIN是行缓冲的,从它我理解的是,我在终端上按下的任何东西都将存储在一个“缓冲区”内存中(也许是以数组的形式)。(请告诉我),当我单击"ENTER“并删除到接收下一行字符时,这个缓冲区就会被推入STDIN流。
如果这是真的,是否有任何方法直接从缓冲区内存读取,而不是等待按下"enter“将其推送到STDIN流,然后从STDIN读取它?或者在C中是否有任何标准功能或实现此功能的任何方法?
发布于 2022-10-25 13:51:27
看看termios.h
。有了所提供的功能,您可以配置您的终端“给”您的每个字符,一旦它被按下。您需要自己缓冲输入,但这应该没有问题。请注意,backspace字符从缓冲区中删除最后一个字符,箭头键创建“无意义”。你得照顾好这些。
https://stackoverflow.com/questions/74200010
复制