2011-05-28 1 views
1

Я пытаюсь понять 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, если я прав, это ECHO выключен на stdin, но программа отключает флаг ECHO для stdout ??
Извините, если мои сомнения звук Noob :(

+4

Может быть, я здесь невежественный, но я думаю, что это больше вопросов по терминальному управлению, чем на stdin/stdout. Последние, по моему мнению, являются лишь простыми потоками данных. – Joey

ответ

2

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

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

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

./a.out >file.out затем STDIN по-прежнему будет приложить ed на терминал, но stdout теперь привязан к файлу.