Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Потоки stdin stdout  (Прочитано 5587 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Boriska
Помогающий

ua
Offline Offline

« : 22-04-2023 20:15 » 

Привет форумчане.
Изучая С встретился с потоками stdin stdout. Из литературы по языку понял, что это потоки байт. Но откуда и куда толком не понятно. Сказано связывается программа с клавиатурой и консолью. Толком как их использовать для своих других нужд не понял. Народ не изучавший С вообще такого понятия вокруг меня не имеет, обсудить не с кем. Далее программировал под микроконтроллеры на С обнаружил, stdout связан с USART. Далее разбираясь с CGI скриптами опять же используя С++ обнаружил, что сервер толкает данные в stdout и читает из stdin. Напрашивается вывод что эти объекты позоляют связывать разные программы и не обязательно это принадлежность осей. Вот не понятно с одной стороны это нечто в Линуксе и Винде, а с другой стороны в бинарнике для микроконтроллера. Просветите пожалуйста.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 22-04-2023 23:44 » 

Язык С создавался для Uniх. В Unix у каждого процесса есть три "стандартных потока": stdin (ввод), stdout (вывод) и stderr (вывод ошибок). Сейчас все тоже самое есть даже в Винде.
"Стандартный поток" — это просто файл. В Unix почти все является файлом. Stdin — это может быть ввод из файла, ввод с клавиатуры (консоль), ввод из сокета (сетевые соединения), ввод из соединительного канала между процессами (pipe). Аналогично с выводом: файл, сокет, консоль, последовательный порт, pipe. В Unix-подобных системах нет ограничений на этот счет, лишь бы устройство принимало и отдавало байты последовательно. С чем будет связан конкретный поток, зависит от окружения, в котором запущена программа, и от самой программы: ведь достаточно закрыть существующий файл и на тот же номер добавить другой. В не Unix-подобном окружении (точнее в POSIX-совместимом) программа ограничена в таких маневрах.

В микроконтроллере без операционной системы потоки и файлы — просто имитация для совместимости с некоторыми функциями стандартной библиотеки С. Скорее всего, откуда вводить и куда выводить, определяется уже на этапе компиляции прошивки.
« Последнее редактирование: 22-04-2023 23:47 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Georgiy38
Новенький

Offline Offline

« Ответ #2 : 07-04-2024 14:57 » 

Это все сложно.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 07-04-2024 15:30 » new

Georgiy38, ну а ты что хотел ) Конечно сложно.

Что рекламировать будешь? Улыбаюсь
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines