競合他社が自社の AI (ノード サーバー) を当社のノード サーバーにアップロードできる AI コンペティションを作成しています。当社はそのコードを取り込み、自動化された方法で実行します。
最初のコードのアップロードでは、xxx がポートの場所でchild_process.spawn()
実行していました。node server.js xxx
スポーンされた子と競合他社の ID をメモリに保存します。彼らが 2 回目のアップロードを行うとき、保存されている子プロセスを競合他社の ID で検索し、process.kill(pid, 'SIGKILL')
そのプロセスを呼び出します。
生成された各子に、私が設定したchild.on('close', callback)
. このコールバックで、ノード サーバーをアップロードしたコード ディレクトリを削除し、新しいコードをコピーして、ノード サーバーを再度起動します。しかし、コード ディレクトリはまだ使用されているため削除できません (EBUSY エラーが発生します)。ノード プロセスを正しく強制終了していないと思います。
これは大丈夫なアプローチですか?もしそうなら、私は何を間違っていますか?