пытаясь понять стандартный ввод, стандартный вывод - PullRequest
1 голос
/ 28 мая 2011

Я пытаюсь понять stdin, stdout ... и у меня есть несколько вопросов
вот код, который я использую:

int main()  
{  
    struct termios new;  
    tcgetattr(1,&new);  
    new.c_lflag &= ~ECHO;  
    tcsetattr(1,TCSAFLUSH,&new);  
    return 0;  
}  

Я хочу знать, что произойдет, если я выключу ECHO на stdin, а не stdout .... Я имею в виду, в обоих случаях я получаю одинаковый результат .... как они отличаются ??

А что возвращает stty команда ??
После запуска вышеуказанной программы я выполнил stty и нашел -echo для строки = 0, если я прав, stdin отключен на *1016*, но программа отключает флаг ECHO для stdout ??
Извините, если мои сомнения звучат нуб :(

1 Ответ

2 голосов
/ 28 мая 2011

Это терминальное управление. И если ваш stdin и stdout подключены к одному терминалу, то вы по-прежнему управляете одной и той же конфигурацией объектов.

tcgetattr просто получает информацию об объекте, связанном с файловым дескриптором.

Конечно, они не должны быть связаны с одним и тем же терминалом. Например, если вы запустите:

./a.out >file.out тогда стандартный вывод все еще будет подключен к терминалу, но стандартный вывод теперь присоединен к файлу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...