---
title: Файловые дескрипторы и каналы
seo:
  title: Файловые дескрипторы и каналы — C++ Developer
  description: Тема «Файловые дескрипторы и каналы» для собеседования C++ Developer. Для чего используют файловые дескрипторы? Что такое Pipe? А Named Pipe?
---

[Все темы C++ Developer](/c-developer)

## <strong>Для чего используют файловые дескрипторы?</strong> [#q-14bee738d69b8102ab06cccc61751d12]

Файловые дескрипторы используются для управления и отслеживания открытых файлов и ресурсов (сокетов, каналов) в операционной системе, позволяя программам читать, записывать и выполнять другие операции с файлами.

:::note[Ссылки для изучения]

1. [Файл дескриптор в Linux. С примерами](https://habr.com/ru/articles/471038/)
   :::

---

## <strong>Что такое</strong> <code>Pipe</code><strong>? А</strong> <code>Named Pipe</code><strong>?</strong> [#q-14bee738d69b812c988ee8c419e4ea98]

<code>Pipe</code>&#58;

- <code>Pipe</code> <strong>(канал)</strong>&#58; Механизм межпроцессного
  взаимодействия, который позволяет передавать данные между процессами.

- <strong>Особенности</strong>&#58; Однонаправленный, анонимный, требует общего
  родительского процесса.

  ```cpp
  int pipefd[2];
  pipe(pipefd);
  ```

<code>Named Pipe&#58;</code>

- <strong>Named Pipe (именованный канал или FIFO)</strong>&#58; Подобен обычному
  каналу, но имеет имя в файловой системе.

- Особенности&#58; Именованный однонаправленный поток байтов; несвязанные процессы могут открыть его по пути. Для независимого обмена в обе стороны обычно используют два FIFO или сокет.

  ```cpp
  mkfifo("/tmp/myfifo", 0666);
  ```

#### Основные различия&#58;

- <code>Pipe</code>&#58; Анонимный, требует общего предка.

- <code>Named Pipe</code>&#58; Именованный, позволяет взаимодействие между
  любыми процессами.

:::note[Ссылки для изучения]

1. [Каналы в Linux](https://habr.com/ru/articles/195152/)
   :::
