Описание тега great-salt-lake
Я подозреваю, почему имеет много общего с видением/дизайн, которые сформировали Unix (а следовательно и Linux), и преимущества, вытекающие из него.
Не сомневаюсь, что есть немаловажным бенефис чтобы не крутился лишний процесс, но я думаю, что больше к ней: раньше были в Unix "все является файлом" метафора, которая имеет неочевидные, но элегантный преимущество, если вы посмотрите на это с зрения системы, а не оболочки сценариев зрения.
Скажем, у вас есть свой нуль
командной строки программы, и /dev/нуль
устройства узла. Из shell-скриптов точки зрения, фу | нуль,
программа на самом деле действительно полезный и удобный, и фу >/dev/нуль
занимает немного больше времени и может показаться странным.
Но два упражнения здесь:
Давайте внедрять программу
нулевого
использованием существующих средств Unix и/dev/нуль
- легко:кошка >/dev/нуль
. Сделано.Вы можете реализовать
/dev/нуль
с точки зрениянуль
?
Вы совершенно правы, что код на C, чтобы просто отменить ввод тривиально, так что это может не быть очевидно, почему это полезно иметь виртуальный файл доступен для задания.
Подумайте: почти каждый язык программирования уже должен работать с файлами, дескрипторы файлов и пути к файлам, потому что они входили в Unix "все является файлом" парадигма с самого начала.
Если все у вас есть программы, которые пишут в stdout, ну, программа не заботится, если вы перенаправить их в виртуальный файл, который глотает все, что пишет, или труба в программу, которая проглатывает все пишет.
Теперь если у вас есть программы, которые занимают пути к файлу для чтения или записи данных (в большинстве программ это сделать) - и вы хотите добавить "пробел" или "отменить этот выходной" функциональность этих программ - ну, а с /dev/нуль
, который поставляется бесплатно.
Обратите внимание, что элегантность его в том, что это уменьшает сложность кода всех участников программы - для каждого Общ-но-специальных usecase, что ваша система может предоставить в качестве "файла" с "именем", код можете избежать добавления пользовательских параметров командной строки и пользовательский код для обработки.
Хорошее программное обеспечение часто зависит от нахождения хороших или "природные" метафоры для реферирования какой-то элемент проблемы таким образом, что становится легче думать о том, но остается гибким, так что вы можете решить в основном тот же ассортимент из более важных проблем, без необходимости тратить время и умственную энергию на переопределении решения одной и той же низкоуровневые проблемы постоянно.
"Все является файлом", похоже, одна такая метафора для доступа средств: вы называете открытие
данного пути в heirarchical имен, получать ссылку (файловый дескриптор) объекта, и вы можете читать
и писать
и т. д. на файловых дескрипторов. Вашему стандартного ввода/вывода в stdout/stderr, в также дескрипторы файлов, что только что произошло, чтобы быть предварительно открыты для вас. Ваши трубы просто файлов и дескрипторы файлов, и перенаправление файл позволяет склеить все эти куски вместе.
В Unix это удалось так же, как и в части из-за того, насколько хорошо эти абстракции работали вместе, и /dev/нуль
лучше всего понимается как часть этого целого.
П. С. стоит взглянуть на версию Unix "все является файлом", и такие вещи, как /dev/нуль
как первые шаги в направлении более гибкого и мощного обобщения метафоры, которая была реализована во многих системах, которые последовали.
Например, в Unix файл-как объекты, такие как /dev/нуль
должен быть реализован в ядре сама, но оказывается, что это полезно, достаточно предоставить функцию в файл/папку форме, которая с тех пор несколько систем, которые позволяют программы для этого.
Одним из первых был план 9 операционной системы, сделанные некоторыми из тех же людей, которые сделали для Unix. Позже, ГНУ Херд сделал что-то подобное со своими "переводчиками". Между тем, в Linux закончилось тем, что предохранитель (который распространился на другие системы сейчас также).