0

私は長時間実行されるコマンド ライン スクリプトを開発していますが、もちろん、それ自体を複数回起動したくありません。そのため、.pid ファイルを作成し、起動時にそのような PID を持つプロセスが存在するかどうかを確認します。問題は、Windows では PID として 0 を返すため、常にその PID の実行によってプロセスを取得します (System Idle には PID 0 があります)。

誰かがそれを修正する方法を知っていますか? Windows 上で動作するデーモンを作成できますか? 修正は pcntl_fork でフォークされるのでしょうか?

PS私はYiiを使用しています.CConsoleCommandクラスをベースにしています。

4

1 に答える 1

0

私は間違っているかもしれませんが、.pid を書き出すと、Windows ではファイルがチェックされるとは思いません。

ファイルが存在するかどうかを確認し、存在する場合は再度実行しないでください。そして、私の知る限り、pcntl_fork は Windows では実行されません (デフォルトでは、ある種の *nix エミュレーターで動作する可能性があります)。

于 2010-07-29T15:08:22.660 に答える