2016-03-13 5 views
0

Хотите создать неназванный канал. На ubuntu 14 я пробовал «трубу», не работал и не мог узнать с помощью интернет-поиска. Для именованного канала работает «mkfifo».Что такое команда linux для создания анонимного канала (неназванный канал)

+1

Неименованная труба создается автоматически для вас, с помощью оболочки, при выполнении конвейера. Постскриптум Что это связано с C++? –

+0

Вы пытаетесь создать канал программно или в оболочке? – user132278

+0

Учитывая теги, я бы предположил, что он хочет сделать это программно в системе linux. J.C., это статья C, а не C++, но, возможно, это может привести к запуску по правому пути: http://tldp.org/LDP/lpg/node11.html – SpencerD

ответ

1

Анонимная труба (ака «труба», так как трубы анонимные) создаются оболочкой при использовании | оператора:

grep example . -r | less 

Вы не можете создать трубу с помощью одной команды, а затем используйте его с другой командой позже, не без какого-то неряшливого /proc обмана. Если вам нужно что-то использовать позже, у вас должно быть какое-то имя, чтобы ссылаться на него, и в этот момент это уже не труба. Просто обязательно подключите каждый конец в правильном порядке (прочитайте перед записью).

Под капотом труба создается как пара открытых файловых дескрипторов с использованием функции pipe(). После вызова pipe() оболочка создает два подпроцесса, и каждый подпроцесс выбирает соответствующий конец канала перед вызовом exec(). В общем, заменить оболочки с помощью собственных программ невозможно. Другие примеры: cd и export.

Вы можете сами создавать трубы в программе, используя pipe().