#c #stdout #echo #stdin
#c #стандартный вывод #echo #стандартный интерфейс
Вопрос:
Я пытаюсь понять stdin
, stdout
… и это несколько вопросов, которые у меня есть
вот код, который я использую:
int main()
{
struct termios new;
tcgetattr(1,amp;new);
new.c_lflag amp;= ~ECHO;
tcsetattr(1,TCSAFLUSH,amp;new);
return 0;
}
Я хочу знать, что произойдет, если я ECHO
выключу stdin
вместо stdout
…. я имею в виду, в обоих случаях я получаю одинаковый результат …. чем они отличаются??
И что stty
возвращает команда??
После запуска вышеупомянутой программы я сделал stty
и нашел -echo для строки = 0, если я прав, оно ECHO
выключено stdin
, но программа отключает ECHO
флаг для stdout
??
Извините, если мои сомнения кажутся нубовскими : (
Комментарии:
1. Возможно, я здесь невежественен, но я предполагаю, что это больше вопросов по управлению терминалом, чем по stdin / stdout. Последние, в моем понимании, являются всего лишь простыми потоками данных.
Ответ №1:
Это управление терминалом. И если оба ваших stdin и stdout подключены к одному терминалу, то вы все еще управляете той же конфигурацией объектов.
tcgetattr
просто получает информацию об объекте, связанном с filedescriptor.
Конечно, они не обязательно должны быть связаны с одним и тем же терминалом. Например, если вы запустите:
./a.out >file.out
тогда стандартный вывод по-прежнему будет подключен к терминалу, но стандартный вывод теперь будет прикреплен к файлу.