更改行尾字符以在装配中供用户输入

时间:2018-07-04 13:48:27

标签: assembly nasm system-calls

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

1 个答案:

答案 0 :(得分:2)

假定您正在谈论从Unix TTY读取输入的Linux或OS X系统调用,通常的方法是使用ioctl将TTY置于原始模式,以便您看到每个字符的类型,无需进行行编辑。

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

stty eol =

您可以使用cat对其进行测试,并看到=(以及换行符)将缓冲的文本提交到内核,以便cat可以看到并打印出来。

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

stty sane和/或reset shell命令在玩完东西后会将您的终端设置恢复为正常。)