バイナリログファイルの処理を容易にするために、名前付きパイプでテールを実行したいと思います。問題は、不思議なデータがストリームの先頭に追加されていることです。開いたポート(open_port)でerlangプロセスを開始してテストを実行し、次に別のシェルを使用してビンを名前付きパイプにキャットします。
ポートからデータを取得するための簡単な関数は次のとおりです。
bin_from_tail() ->
open_port({spawn,"/usr/bin/tail -F named_pipe"},
[binary,in,eof]),
receive
{_,{data,<<Data/binary>>}} -> Data
end.
だからここに私が同じデータを取得するための2つの方法があります...
名前付きパイプを作成します
mkfifo名前付きパイプ
このコマンドは、別のシェルから「catlog.bin>named_pipe」を実行するまでブロックされます
{ok、TailBin} = file:read_file(log.bin)。
erlangファイルライブラリFileBin=file:read_file(log.in)を使用して、ファイル全体をメモリに読み込みます。
しかし、TailBinとFileBinは同じではありません!TailBinには、最初に不思議な120バイトの文字列があります。
<<40,6,161,69,172,216,56,14,100,0,80,6,0,0,0>>