名前付きパイプでの出力をある時点で待機するソフトウェアがあります。このアクションはブロックされています。その間、画像を読み込んでください。whileループが始まる直前にプロセスをフォークすることで、これを実現しようと考えていました。
my $pid = fork()
if (defined($pid) and $pid == 0) {
show_animation();
exit 0;
}
while ($return_line = $FIFO->getline) {
# Process the output when it's ready
}
はshow_animation()
、出力を書き込んでいるスクリプトがまだ実行中であるかどうかを確認し、終了するとすぐに終了します。
残念ながら、フォークされたプロセスがメインのプロセスと同じソケットおよび他のすべてのものを共有するため、これはすべてを壊しました。そして、ZeroMQはこれを好まないようです(プロセスがフォークされるとすぐにプログラムはZeroMQエラーで中止されます)。
2つのプロセス間でSTDOUTチャネルを共有できるProc::Spawnのようなモジュールを探していました。何か提案はありますか?これを達成するためのより良い方法はありますか?