我正在创建一个AI竞赛,竞争对手可以将他们的AI(节点服务器)上传到我们的节点服务器,然后我们接收他们的代码并以自动方式运行它。
首次代码上传时,我使用child_process.spawn()
运行node server.js xxx
,其中xxx是其端口。我将生成的孩子以及竞争对手的id存储在内存中。当他们第二次上传时,我会按竞争对手ID搜索我存储的子流程,并在流程上调用process.kill(pid, 'SIGKILL')
。
在每个产生的孩子身上,我设置了child.on('close', callback)
。在这个回调中,我想删除他们上传节点服务器的代码目录,然后复制他们的新代码并再次启动节点服务器。但是,我无法删除代码目录,因为它仍在使用中(我收到EBUSY错误),我认为我没有正确地杀死节点进程。
这是一个好的方法吗?如果是这样,我做错了什么?