Как стандартный ввод отображается на терминале?

191
mngo

Согласно статье в Википедии о стандартных потоках, клавиатура подключается к программе через стандартный ввод. Я предполагаю, что программа ссылается на оболочку, которая интерпретирует команды, введенные с клавиатуры. Мой вопрос: как мои входы отображаются на экране, если они перенаправлены в программу? Надеюсь, вы исправите меня за любое недоразумение, которое у меня может быть.

1
Не могли бы вы уточнить, как вы видите это сейчас? Я не понимаю, какую часть ты не понимаешь. gronostaj 10 лет назад 0

1 ответ на вопрос

2
Squeezy

Ваши входы отображаются для вас терминалом / программой / операционной системой / хостом. Если он настроен на это, вы ничего не увидите на своем экране.

http://en.wikipedia.org/wiki/Echo_(computing), вероятно, лекция, которую вы хотите в следующий раз.

Кажется, что терминал будет выполнять локальное эхо на своем дисплее! Я думаю, что это именно то, что я искал! Спасибо. mngo 10 лет назад 0
Существует 3 основных дескриптора файла (потока): стандартный вход, стандартный выход и стандартная ошибка. Программа запишет один из этих дескрипторов. без какого-либо перенаправления ваш терминал будет отображать любой из них на экране. Я бы посетил http://en.wikipedia.org/wiki/Standard_streams, прежде чем лично отозваться. Gregg Leventhal 10 лет назад 0
Я перечитал ваш вопрос и вижу, что вы уже пришли оттуда. Ответ заключается в том, что программа будет использовать функции библиотеки C, которые по сути являются обертками для системных вызовов, которые будут записывать соответствующий файловый дескриптор (0,1,2) и, следовательно, поток, который будет отображаться в вашем терминале. Gregg Leventhal 10 лет назад 0
В конечном итоге echo использует системный вызов write. Посмотрите на этот след команды "echo helloThere!" write (1, "helloThere! \ n", 12helloThere!), который использует файловый дескриптор 1 (стандартный поток вывода для записи 12-байтовой строки в мой терминал, за которой следует символ новой строки. Gregg Leventhal 10 лет назад 0