Что такое файловые дескрипторы?
У каждого процесса в Linux есть три стандартных канала:
FD Назначение
0 stdin (ввод)
1 stdout (вывод)
2 stderr (ошибки)
Но процесс может иметь дополнительные дескрипторы:
3, 4, 5 … — хоть до сотен.
Это такие же каналы ввода-вывода, как и 0–2, только вы сами решаете, куда они ведут.
📌Зачем нужны дополнительные FD?
Обычное перенаправление < file может быть применено только один раз, то есть вы не можете «последовательно читать два файла» в одном цикле:
while read line; do …; done < file1 < file2 # так не работает
Более того, невозможно одновременно читать из одного файла и писать в другой ― в рамках одного while read.
Файловые дескрипторы это исправляет.
У каждого процесса в Linux есть три стандартных канала:
FD Назначение
0 stdin (ввод)
1 stdout (вывод)
2 stderr (ошибки)
Но процесс может иметь дополнительные дескрипторы:
3, 4, 5 … — хоть до сотен.
Это такие же каналы ввода-вывода, как и 0–2, только вы сами решаете, куда они ведут.
📌Зачем нужны дополнительные FD?
Обычное перенаправление < file может быть применено только один раз, то есть вы не можете «последовательно читать два файла» в одном цикле:
while read line; do …; done < file1 < file2 # так не работает
Более того, невозможно одновременно читать из одного файла и писать в другой ― в рамках одного while read.
Файловые дескрипторы это исправляет.
Просмотры: 6