我正在用 nasm 编写一个计算器程序,我想读取用户输入,直到用户输入=。换句话说,我不希望用户按 Enter 键来结束输入行。是否有任何特殊的系统调用或其他东西?
最佳答案
假设您正在谈论用于从 Unix TTY 读取输入的 Linux 或 OS X 系统调用,通常的方法是使用 ioctl 将 TTY 置于原始模式,这样您就可以看到每个字符的键入情况,无需进行行编辑。
但您也可以设置 TTY 的 eol
(行尾)字符。例如从命令行,
stty eol =
您可以使用cat
对其进行测试,并看到=
(以及换行符)将缓冲的文本提交到内核,以便cat看到它并打印它。
使用strace
查看stty
使用什么系统调用来执行此操作。它是 ioctl(0, TCGETS, { stuf ...}) = 0
(stty sane
和/或 reset
shell 命令将在使用完内容后将您的终端设置重置回正常状态。)
关于assembly - 更改汇编中用户输入的行尾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175247/