他の人が開発した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に書き込むまで待つ必要があります。