自分自身を繰り返しフォークする Perl スクリプトがあります。フォークされた各インスタンスに関する統計を収集したいと考えています。つまり、成功したか失敗したか、および合計でインスタンスがいくつあったかです。このタスクのために、すべてのインスタンスで共有される変数を作成する方法はありますか?
私の perl バージョンは v5.8.8 です。
IPC::Shareableは文字通りあなたが求めていることを行います。各プロセスは、(たとえば) 共有ハッシュのロックとロック解除に注意する必要がありますが、データはプロセス間で共有されているように見えます。
ただし、通常の UNIX 機能は、ワーカーのステータスとカウントを収集するためのより簡単な方法 (IMHO) を提供します。たとえば、すべてのプロセス$| = 1
が END 時に「ok\n」または「not ok\n」と書き込み ( ) るようにし、比較的短い書き込みはインターリーブされないため、FIFO に書き込みを行っていることを確認します。{} 次に、その出力 (例: ) をキャプチャ./my-script.pl | tee /tmp/my.log
すれば完了です。別のアプローチではopen(my $status, '>', "./status.$$")
、このために特別に用意されたディレクトリ内の単純なファイルにステータスを記録します。