Потоки

В ОС понимание концепции потоков является фундаментальным для работы с командной строкой и написания эффективных скриптов. Потоки подразумевают каналы передачи данных между программами. Потоки предоставляют механизм обмена данными между программами и обеспечивают важный способ передачи информации внутри Системы.

Общие понятия потоков описываются следующими возможностями:

  • Стандартные потоки:
    • Стандартный ввод (stdin) – поток данных, который принимает ввод от пользователя (например, с клавиатуры) или других программ.
    • Стандартный вывод (stdout) – поток данных, который представляет собой вывод программы и обычно отображается в терминале.
    • Стандартный поток ошибок (stderr) – поток данных, используемый для вывода сообщений об ошибках и предупреждений.
  • Потоки ввода и вывода:
    • Поток ввода (Input Stream) – источник данных, из которого программа читает информацию, например stdin.
    • Поток вывода (Output Stream) – канал, в который программа выводит результаты, например stdout и stderr.
  • Перенаправление потоков:
    • Перенаправление ввода (<) – изменение источника данных для программы, используя данные из файла вместо stdin.
    • Перенаправление вывода (>) – запись вывода программы в файл вместо stdout.
    • Перенаправление ошибок (2>) – перенаправление сообщений об ошибках в файл вместо stderr.

Например, возможен случай, при котором содержание текущего каталога должно не отображаться на экране, а сохраняться в файле. Таким образом, стандартный вывод должен переадресовываться в настоящий файл. В bash это делается с помощью символа ">":

ls *.txt > content.txt

В файл content выведен список всех текстовых файлов, расположенных в текущем каталоге. Чаще всего применяется именно такой способ переадресации вывода.

Есть еще два варианта:

  • 2> файл – переадресовывает сообщения об ошибках в указанный файл;
  • >& файл или &> файл – переадресовывают в указанный файл и сообщения об ошибках, и программный вывод.

Если использовать вместо > двойной символ >>, то весь ввод дописывается в конец уже имеющегося файла.

Переадресация ввода осуществляется с помощью < файл: команды, ожидающие ввода с клавиатуры, считывают ввод из указанного таким образом файла.

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

Команды вида:

sort dat > dat

или

sort < dat > dat

приводят к удалению файла dat.

Возможности переадресации ввода и вывода приведены ниже (Таблица 5).

В ОС РОСА "ХРОМ" новый процесс создается путем копирования атрибутов текущего процесса. Новый процесс может быть клонирован и при этом такие ресурсы, как файлы, обработчики сигналов и виртуальная память, используются совместно. Если два процесса пользуются одной и той же виртуальной памятью, они функционируют как потоки в рамках одного и того же процесса. Однако для потоков структуры данных отдельно не задаются. Таким образом, в ОС РОСА ХРОМ потоки и процессы не различаются.

Более подробный разбор потоков приведен в п. Общие сведения.