更改用户在程序集中输入的行尾字符
Change end of line character for user input in assembly
我正在 nasm 中编写一个计算器程序,我想读取用户输入,直到用户输入 =。换句话说,我不希望用户在输入行结束时按回车键。有什么特殊的系统调用吗?
假设您正在谈论 Linux 或 OS X 系统调用以从 Unix TTY 读取输入,通常的方法是使用 ioctl 将 TTY 置于原始模式,这样您就可以看到每个键入的字符,无需行编辑。
但您也可以设置 TTY 的 eol
(行尾)字符。例如从命令行,
stty eol =
您可以使用 cat
对其进行测试并查看 =
(以及换行符)将您的缓冲文本提交给内核,以便 cat 看到并打印它。
使用 strace
查看 stty
使用什么系统调用来执行此操作。这是ioctl(0, TCGETS, { stuf ...}) = 0
(stty sane
and/or reset
shell 命令会在玩完东西后将您的终端设置重置为正常。)
我正在 nasm 中编写一个计算器程序,我想读取用户输入,直到用户输入 =。换句话说,我不希望用户在输入行结束时按回车键。有什么特殊的系统调用吗?
假设您正在谈论 Linux 或 OS X 系统调用以从 Unix TTY 读取输入,通常的方法是使用 ioctl 将 TTY 置于原始模式,这样您就可以看到每个键入的字符,无需行编辑。
但您也可以设置 TTY 的 eol
(行尾)字符。例如从命令行,
stty eol =
您可以使用 cat
对其进行测试并查看 =
(以及换行符)将您的缓冲文本提交给内核,以便 cat 看到并打印它。
使用 strace
查看 stty
使用什么系统调用来执行此操作。这是ioctl(0, TCGETS, { stuf ...}) = 0
(stty sane
and/or reset
shell 命令会在玩完东西后将您的终端设置重置为正常。)