質問: ファイルをunixパイプにキャットすると、matlabがフリーズします mkfifo pipe.inを使用してdebianで名前付きパイプを作成しました。 matlabからこのパイプに書き込みたいです。これを行うには、次のmatlabコマンドを使用します。unix( 'cat <myfile> > pipe.in' ) ここで、<myfile>はテキストファイルで、pipe.inはmkfifoで作成したパイプです。多くの場合、パイプに関連付けられたプロセスは多くの理由でクラッシュしました(ただし、unixおよびcatコマンドの使用以外の理由で)。クラッシュはいくつかの場合に正常である可能性があります。上記のコマンドを実行すると、matlabがフリーズし、ctrl+cで制御を取り戻すことができません。プロセスを強制終了せずにmatlabをリリースする別の方法はありますか?
回答: matlabのブロックを解除するmatlabのブロックを解除するには、matlabを起動したターミナルで ctrl-\を押してquitシグナルを送信します 。matlabがフリーズする理由cat <myfile> > pipeが終了しないため、unix関数が戻らないため、matlabがフリーズしています。ターミナルでcat <myfile> > pipe.inを実行すると、同じ「フリーズ」動作が示されます。私のbash-fuはあまり良くありませんが、writerが終了する前に、パイプから何かがreadingされている必要があると思います。一時的なパイプとファイルを作成するmkfifo /tmp/temppipe echo "1 2 3 4 5 6 7 8 0" > /tmp/tempfile パイプに書き込むこのコマンドは終了しません:cat /tmp/tempfile > /tmp/temppipe このコマンドは次のようになります。cat /tmp/tempfile > /tmp/temppipe & cat < /tmp/temppipe 読み取りプロセスを作成すると、unixへのmatlab呼び出しが終了することを期待しています。