首页 > 解决方案 > 在程序集中更改用户输入的行尾字符

问题描述

我正在用 nasm 编写一个计算器程序,我想读取用户输入,直到用户输入 =。换句话说,我不希望用户在输入行结束时按下回车键。是否有任何特殊的系统调用或其他东西?

标签: assemblynasmsystem-calls

解决方案


假设您正在谈论从 Unix TTY 读取输入的 Linux 或 OS X 系统调用,通常的方法是使用 ioctl 将 TTY 置于原始模式,这样您就可以看到每个字符都是输入的,没有行编辑。

但您也可以设置 TTY 的eol(行尾)字符。例如从命令行,

stty eol =

您可以测试它cat并查看=(以及换行符)将缓冲文本提交给内核,以便 cat 看到并打印它。

用于strace查看stty执行此操作的系统调用。它是ioctl(0, TCGETS, { stuf ...}) = 0

stty sane和/或resetshell 命令将在玩完东西后将您的终端设置重置为正常。)


推荐阅读