1

Cにマルチパイプを実装したいので、次のようなことができます|||.stdinをNパイプコマンドに複製することを意味します):

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コードを検索しています。

ありがとう!

4

2 に答える 2

4

teeコマンドから始めて、コードを調べる必要があるかもしれません。

于 2011-07-25T21:30:01.410 に答える
0

C では、データ read を排出せずに複数のプロセス (またはスレッド) が同じファイル記述子を読み取ることは不可能であるため、すべてのソリューションでは、読み取ったデータを一時ファイルに保存してから、それぞれが一時ファイルを読み取る必要があります。

于 2011-08-29T18:43:41.083 に答える