Tee がパイプと結合されると、ファイルに書き込まれません。

Tee がパイプと結合されると、ファイルに書き込まれません。

他の人が開発したCコードをMATLABを使用して実行しようとしています。 cでは、stdoutに書かれ、matlabでパイプを作成し、次を読みます。

unix('rm -f /tmp/matdata.in;mkfifo /tmp/matdata.in');
unix(['./',file,' > /tmp/matdata.in &']);
fid=fopen('/tmp/matdata.in','r');

今後の分析のために、パイプに渡されたデータをファイルに記録したいと思います。 ''tee''がこれに役立つことを知っていますが、次の2つのコマンドを試してみると、パイプとファイルのサイズは常にゼロです.

unix(['./',file,' > /tmp/matdata.in | tee /tmp/data &']);
unix(['./',file,' | tee /tmp/matdata.in /tmp/data &']);

ベストアンサー1

stdioを使用してstdoutに書き込むと、ファイルとパイプの出力はブロックバッファリングされます。

stdinから4kまたは8k(ローカルのstdioに依存)を受け取り、それをstdoutに書き込むまで待つ必要があります。

おすすめ記事