0

我试图杀死我在服务器中运行的子进程。基本上,子进程运行我在 React 的在线终端中编写的 johnny-5 代码到我的服务器。当我运行子进程时,代码运行良好,但是如果我想杀死子进程,我不能在不停止服务器的情况下这样做。我试过这样做Control-C.exit()但似乎都不管用。

codeRouter
  .post('/codeAPI', (req, res) => {

    console.log(req.body)
    let fileName = `johnnyFiles/${req.body.currentFile}`
    fs.writeFileSync(fileName, req.body.currentCode, (err) => {
      if (err) throw err
    })
    let id = shortid.generate()
    let fileObject = {
      fileName: req.body.currentFile,
      fileContents: req.body.currentCode,
      ID: id
    }
    data = [fileObject, ...data]
    fs.writeFileSync('data/fileData.json', JSON.stringify(data), (err) => {
      if (err) throw err
    })

    res.json(data)
    ///////////////////////////////////////////
    let nodeSpawn = spawn('node', [fileName], {
      //detached: true,
      shell: true
    })
    nodeSpawn.stdout.on('data', (data) => {
      console.log("OUTPUT", data.toString())
    })
    nodeSpawn.stderr.on('data', (data) => {
      console.log("ERRORS", data.toString())
    })
    nodeSpawn.on('exit', (code) => {
      console.log(`Child exited with code ${code}`)
      nodeSpawn.kill('SIGINT')
    })



  })

`

4

1 回答 1

0

您可以使用 linux 命令行。

要使用命令查看正在运行的进程,请使用:

pgrep node

要终止进程,您可以使用:

kill <pid>

或者强制关机

kill -9 <pid>

或者如果你想杀死所有节点进程

kill $(pgrep node) 
于 2019-03-20T19:07:44.830 回答