assembly - 在程序集中更改用户输入的行尾字符
问题描述
我正在用 nasm 编写一个计算器程序,我想读取用户输入,直到用户输入 =。换句话说,我不希望用户在输入行结束时按下回车键。是否有任何特殊的系统调用或其他东西?
解决方案
假设您正在谈论从 Unix TTY 读取输入的 Linux 或 OS X 系统调用,通常的方法是使用 ioctl 将 TTY 置于原始模式,这样您就可以看到每个字符都是输入的,没有行编辑。
但您也可以设置 TTY 的eol
(行尾)字符。例如从命令行,
stty eol =
您可以测试它cat
并查看=
(以及换行符)将缓冲文本提交给内核,以便 cat 看到并打印它。
用于strace
查看stty
执行此操作的系统调用。它是ioctl(0, TCGETS, { stuf ...}) = 0
(stty sane
和/或reset
shell 命令将在玩完东西后将您的终端设置重置为正常。)
推荐阅读
- security - Zeppelin, Livy, 我可以得到 proxyUser
- java - 通过Java获取特定Kubernetes服务的节点IP
- python - Python,selenium chrome 驱动程序填充表单(元素 id 的变化)
- docker - 带有 GCP 凭据的 Gitlab Runner Image
- javascript - 无法运行程序 ng
- encryption - 对于基于 ISO 的媒体的加密,每个样本是否有最大允许的子样本?
- ionic-framework - 如何在 ionic 3 中的 Onesignal 中将默认推送通知图标更改为小图标?
- c# - 动作结果
没有按预期工作 - javascript - ReactJS,react-router:登录页面中的排除导航菜单
- jquery - 如何从 jQuery 库中获取项目的属性