> Что такое потоки ввода-вывода в Linux (Go)

Уровень: junior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: YADRO

Стек: Go

> Пример ответа

В Linux потоки ввода-вывода (I/O streams) - это абстракция, представляющая источник или приемник данных. Каждый процесс по умолчанию имеет три стандартных потока: stdin (0), stdout (1) и stderr (2). Они реализованы через файловые дескрипторы - целочисленные идентификаторы, которые ядро использует для управления открытыми файлами, сокетами, каналами и другими ресурсами.

В Go работа с потоками ввода-вывода строится на интерфейсах io.Reader и io.Writer. Например, os.Stdin реализует io.Reader, а os.Stdout - io.Writer. Это позволяет легко перенаправлять потоки, используя такие функции, как io.Copy или io.Pipe. Пример:

GO
package main
import (
"io"
"os"
)
func main() {
// Копирование данных из stdin в stdout
io.Copy(os.Stdout, os.Stdin)
}

Здесь io.Copy читает из os.Stdin (поток ввода) и пишет в os.Stdout (поток вывода), демонстрируя гибкость абстракции. В Linux это эквивалентно команде cat без аргументов.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью