node.js - Accessing the exit code and stderr of a system command

前端 未结 3 989
春和景丽
春和景丽 2020-12-14 00:43

The code snippet shown below works great for obtaining access to the stdout of a system command. Is there some way that I can modify this code so as to also get access to t

3条回答
  •  太阳男子
    2020-12-14 01:07

    You will want the async/callback version of exec. There are 3 values returned. The last two are stdout and stderr. Also, child_process is an event emitter. Listen for the exit event. The first element of the callback is the exit code. (Obvious from the syntax, you'll want to use node 4.1.1 to get the code below to work as written)

    const child_process = require("child_process")
    function systemSync(cmd){
      child_process.exec(cmd, (err, stdout, stderr) => {
        console.log('stdout is:' + stdout)
        console.log('stderr is:' + stderr)
        console.log('error is:' + err)
      }).on('exit', code => console.log('final exit code is', code))
    }
    

    Try the following:

    `systemSync('pwd')`
    
    `systemSync('notacommand')`
    

    And you will get:

    final exit code is 0
    stdout is:/
    stderr is:
    

    Followed by:

    final exit code is 127
    stdout is:
    stderr is:/bin/sh: 1: notacommand: not found
    

提交回复
热议问题