По сути, перенаправление и конвейерная связь - это несколько способов достижения взаимодействия между процессами в Unix.
- Перенаправление : данные записываются и считываются из типичного файла UNIX. Любое количество процессов может взаимодействовать. это необходимо использовать при совместном использовании больших наборов данных.
ls > FileName
- Трубопровод : Трубопровод - это процесс, в котором выход одного процесса становится входом другого. Они развивались в самых примитивных формах операционной системы Unix. Они обеспечивают однонаправленный поток связи между процессами в одной системе. Канал создается путем вызова системного вызова канала, который создает пару файловых дескрипторов. [Для файловых дескрипторов прочитайте http://www.bottomupcs.com/file_descriptors.html]
ls | grep $myName
Работает с простым обменом данными, например, производителем и потребителем.
Сравнение свойств: Трубопровод всегда однонаправлен, в то время как перенаправление может использоваться для перенаправления ввода и вывода.
ls > grep myFileName
[Перенаправление вывода первой команды на следующую]
sort < fileName.txt
[Перенаправление файла fileName.txt в качестве входных данных для сортировки команд]
Можно также написать ниже, чтобы использовать двунаправленное перенаправление в одном выражении.
sort < fileName.txt > sortNewFile.txt
В то время как Piping
, это всегда вывод первой команды, переданной последней, и одновременной.
ls | grep myName | awk '{ print $NF }'
[несколько трубопроводов в одном операторе]
Примечание 1: command > fileName
. Если есть команда с именем fileName
, это сделает использование перенаправления намного сложнее и более подвержено ошибкам. Сначала нужно проверить, есть ли команда с именем, например, файл назначения.
Другие способы достижения IPC в системе Unix:
- Именованная труба
- Сигнал
- Общая память
- Разъем