Изменить символ конца строки для пользовательского ввода в сборке - PullRequest
0 голосов
/ 04 июля 2018

Я пишу программу калькулятора в nasm, и я хотел бы читать ввод пользователя, пока пользователь не введет =. Другими словами, я не хочу, чтобы пользователь нажимал ввод для конца строки ввода. Есть ли специальный системный вызов или что-то для этого?

1 Ответ

0 голосов
/ 04 июля 2018

Предполагая, что вы говорите о системных вызовах Linux или OS X для чтения ввода из TIX Unix, обычным способом является перевод TTY в необработанный режим с помощью ioctl, чтобы вы видели каждый символ как его напечатанный, без редактирования строки.

Но вы также можете установить символ eol (конец строки) TTY. например из командной строки

stty eol =

Вы можете проверить его с помощью cat и увидеть, что = (так же, как и новая строка) отправляют ваш буферизованный текст в ядро, так что cat видит его и печатает его.

Используйте strace, чтобы увидеть, что системные вызовы stty используют для этого. Это ioctl(0, TCGETS, { stuf ...}) = 0

(Команды оболочки stty sane и / или reset вернут настройки терминала в нормальное состояние после игры с вещами.)

...