Несколько труб в C - PullRequest
       113

Несколько труб в C

1 голос
/ 26 июля 2011

Я хочу реализовать несколько каналов в c, чтобы я мог сделать что-то вроде этого, где ||| означает дублирование команд stdin to N pipe):

cat /tmp/test.log ||| wc -l ||| grep test1 ||| grep test2 | grep test3

Это вернет мне количество строк в файле и строк в файле, которые содержат строку 'test1' и строк в файле, которые содержат 'test2' && 'test3' строка

Другими словами, это будет иметь эффект этих 3 обычных конвейеров:

cat /tmp/test.log  | wc -l --> stdout
                   | grep test1 --> stdout
                   | grep test2 | grep test3 --> stdout

Кто-то уже реализовал что-то подобное? Я ничего не нашел ... ПРИМЕЧАНИЕ. Я знаю, что это можно сделать с помощью языков сценариев или с помощью нескольких файловых дескрипторов bash, но я ищу код C, чтобы сделать это.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 26 июля 2011

Возможно, вам следует начать с команды tee и проверить их код .

0 голосов
/ 29 августа 2011

Поскольку в C невозможно, чтобы более одного процесса (или потока) считывали один и тот же файловый дескриптор без очистки прочитанных данных , все решения должны будут хранить прочитанные данные во временном файле и затем каждый прочитал временный файл.

...