我正在用nasm编写计算器程序,我想读取用户输入,直到用户输入=。换句话说,我不希望用户按Enter键作为输入行的结尾。是否有任何特殊的系统调用或其他东西?
答案 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命令在玩完东西后会将您的终端设置恢复为正常。)