进入原始模式(第二节)
进入原始模式
让我们尝试读取用户的按键输入。(你需要添加的代码行已高亮显示并用箭头标记。)
kilo.c
步骤 3:读取输入
#include <unistd.h>
int main() {
char c;
while (read(STDIN_FILENO, &c, 1) == 1);
return 0;
}
♐︎ 可编译
read()
函数和 STDIN_FILENO
宏来自 <unistd.h>
头文件。我们使用 read()
函数从标准输入读取 1 个字节到变量 c
中,并持续进行此操作,直到没有更多字节可读。read()
函数返回其读取的字节数,当到达文件末尾时返回 0。
当你运行 ./kilo
时,你的终端会连接到标准输入,因此你在键盘上的输入会被读取到变量 c
中。不过,默认情况下,终端以规范模式(也称为 “熟” 模式)启动。在这种模式下,只有当用户按下回车键时,键盘输入才会被发送到你的程序。这对许多程序来说很有用:它允许用户输入一行文本,使用退格键修正错误,直到输入符合他们的要求,最后按下回车键将输入发送给程序。但对于像文本编辑器这类具有更复杂用户界面的程序而言,这种模式并不适用。我们希望在每次按键时就立即处理输入,以便能迅速做出响应。
我们需要的是原始模式。遗憾的是,没有简单的开关能将终端设置为原始模式。原始模式需要关闭终端中的许多标志位来实现,我们将在本章逐步完成这一操作。
要退出上述程序,按下 Ctrl - D
告知 read()
函数已到达文件末尾。或者,你也可以随时按下 Ctrl - C
向进程发送立即终止的信号。

扫描二维码关注微信公众号,回复密码,即可获取密码
阅读剩余
版权声明:
作者:讳疾忌医-note
链接:https://www.1217zy.vip/archives/102
文章版权归作者所有,未经允许请勿转载。
THE END