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