пытаюсь понять stdin, стандартный вывод

#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 тогда стандартный вывод по-прежнему будет подключен к терминалу, но стандартный вывод теперь будет прикреплен к файлу.