我正在创建一个AI竞赛,竞争对手可以将他们的AI(节点服务器)上传到我们的节点服务器,然后我们接收他们的代码并以自动方式运行它 .

在第一次代码上传时,我使用 child_process.spawn() 来运行 node server.js xxx ,其中xxx是他们的端口 . 我将生成的孩子以及竞争对手的id存储在内存中 . 当他们第二次上传时,我会通过竞争对手ID搜索我存储的子进程,并在进程中调用 process.kill(pid, 'SIGKILL') .

在每个衍生的孩子身上,我设置了 child.on('close', callback) . 在这个回调中,我想删除他们上传节点服务器的代码目录,然后复制他们的新代码并再次启动节点服务器 . 但是,我无法删除代码目录,因为它仍然在使用(我得到一个EBUSY错误),我想我没有正确地杀死节点进程 .

这是一个好的方法吗?如果是这样,我做错了什么?