Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поток ConsoleIn, Не могу точно понять, как он работает 
:(
    Опции темы
Hagrael
Дата 4.7.2011, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



Как работает данный поток? Да и вообще что из себя представляет поток? Это какое место (очередь) в памяти или же что?
PM MAIL   Вверх
bsa
Дата 4.7.2011, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



А что это за поток такой? В стандартах С и С++ он не упоминается. Может тебе в WinAPI обратиться? smile

Это сообщение отредактировал(а) bsa - 4.7.2011, 23:20
PM   Вверх
volatile
Дата 4.7.2011, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



ConsoleIn - ?
Это похоже даже не WinAPI, а гораздо дальше от темы.
Что-то из Java?
PM MAIL   Вверх
Sartorius
Дата 5.7.2011, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 2
Всего: 37



Hagrael, может быть это Console.In из CLI C++? 
PM MAIL ICQ   Вверх
Hagrael
Дата 5.7.2011, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



Я говорил о потоке, объект которого cin (оттуда и ConsoleIN). Извините, если неправильно расшифровал.
PM MAIL   Вверх
bsa
Дата 5.7.2011, 10:36 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Hagrael, при запуске консольной программы она получает 3 открытых файла:
0 - STDIN_FILENO
1 - STDOUT_FILENO
2 - STDERR_FILENO

Запись в 2 последних приводит к выводу данных на экран, чтение из первого - чтение данных с клавиатуры (в принципе, запускающий процесс может изменить цели и источники, например, связав 0-й поток процесса с файлом, 1-й с 0-м второго процесса, а 1-й второго процесса с другим файлом,  в итоге получится цепочка "фильтров").

стандартная библиотека С оборачивает их в потоки stdin, stdout и stderr, для работы через fprintf, fputs...
стандартная библиотека С++ оборачивает их в потоки std::cin, std::cout и std::cerr.
cin ведет себя как экземпляр класса std::istream, у которого есть некий специальный streambuf (аналог filebuf), осуществляющий чтение из файла с дескриптором 0.
PM   Вверх
Hagrael
Дата 5.7.2011, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



В общем, поток - это файл, так?
А как вообще после нажатия что-то попадает в файл? (если долго отвечать, толкните, пожалуйста, в нужную литературную сторону)
PM MAIL   Вверх
bsa
Дата 5.7.2011, 15:50 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Hagrael, по хорошему, в современных ОС все устройства выглядят как файлы (в windows они имеют путь вида \\\\.\filename). К ним применимы 3 вида действий: чтение, запись и ioctl. Кроме устройств и "обычных файлов" есть еще сокеты, каналы и именованные каналы. Консоль скорее всего в Windows реализуется через канал (см CreatePipe). Эмулятор консоли создает каналы и передает их как открытые файлы в консольное приложение при запуске. Данные которые приходят с клавиатуры отправляются в канал, а данные записываемые приложением - читаются эмулятором и рисуются в окне.
PM   Вверх
Hagrael
Дата 6.7.2011, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 26.6.2011

Репутация: нет
Всего: нет



bsa, все это сложно, думаю, стоит отложить этот вопрос до прочтения книги.
PM MAIL   Вверх
bsa
Дата 6.7.2011, 09:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Hagrael, проще говоря, далеко не каждый файл лежит на диске. Устройства выглядят, как файлы. Но фактически ни на каком диске не лежат. Просто когда ты открываешь подобный файл система получает сигнал и связывает функции read/write/ioctl с драйвером конкретного устройства.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.