从child_process.spawn中检索shell错误输出
我正在使用child_process.spawn
并需要捕获命令失败时发生的shell错误。 根据这个问题 ,我应该可以做到:
var child_process = require('child_process'); var python = child_process.spawn( 'python', ["script.py", "someParam"] ); python.on('error', function(error) { console.log("Error: bad command", error); });
当我用banana
代替'python', ["script.py", "someParam"]
,就像链接的问题一样,它工作正常,错误是可见的。 但在我的情况下,使用python与参数,“错误”事件永远不会被调用。
我如何从python捕获shell错误?
根据ChildProcess
error
事件的Node.js文档,只能在几种情况下触发:
- 这个过程不能产生,或者
- 这个过程不能被杀死,或者
- 无论出于何种原因,向subprocess发送消息都失败。
要捕获shell错误输出,还可以在产生的进程的stdout
和stderr
上监听data
事件:
python.stdout.on('data', function(data) { console.log(data.toString()); }); python.stderr.on('data', function(data) { console.error(data.toString()); });
要捕获shell错误代码,您可以将一个侦听器附加到exit
事件:
python.on('exit', function(code) { console.log("Exited with code " + code); });