Хотите создать неназванный канал. На ubuntu 14 я пробовал «трубу», не работал и не мог узнать с помощью интернет-поиска. Для именованного канала работает «mkfifo».Что такое команда linux для создания анонимного канала (неназванный канал)
ответ
Анонимная труба (ака «труба», так как трубы анонимные) создаются оболочкой при использовании |
оператора:
grep example . -r | less
Вы не можете создать трубу с помощью одной команды, а затем используйте его с другой командой позже, не без какого-то неряшливого /proc
обмана. Если вам нужно что-то использовать позже, у вас должно быть какое-то имя, чтобы ссылаться на него, и в этот момент это уже не труба. Просто обязательно подключите каждый конец в правильном порядке (прочитайте перед записью).
Под капотом труба создается как пара открытых файловых дескрипторов с использованием функции pipe()
. После вызова pipe()
оболочка создает два подпроцесса, и каждый подпроцесс выбирает соответствующий конец канала перед вызовом exec()
. В общем, заменить оболочки с помощью собственных программ невозможно. Другие примеры: cd
и export
.
Вы можете сами создавать трубы в программе, используя pipe()
.
Неименованная труба создается автоматически для вас, с помощью оболочки, при выполнении конвейера. Постскриптум Что это связано с C++? –
Вы пытаетесь создать канал программно или в оболочке? – user132278
Учитывая теги, я бы предположил, что он хочет сделать это программно в системе linux. J.C., это статья C, а не C++, но, возможно, это может привести к запуску по правому пути: http://tldp.org/LDP/lpg/node11.html – SpencerD