我只是在重新讨论一下,因为从5.7.0版开始,节点中的spawn命令现在有了一个’shell’选项。不幸的是,似乎没有一个选项可以生成一个 交互式的
shell(我也尝试过
shell: '/bin/sh-i'但没有喜悦)。但是,我刚刚发现这建议使用“
stdbuf”,使您可以更改要运行的程序的缓冲选项。将它们在所有内容上都设置为0会为所有流生成无缓冲的输出,并且它们仍然保持分开。
这是更新的javascript:
var TEST_EXEC = './test';var spawn = require('child_process').spawn;var test = spawn('stdbuf', ['-i0', '-o0', '-e0', TEST_EXEC]);test.stdout.on('data', function (data) { console.log('stdout: ' + data);});test.stderr.on('data', function (data) { console.log('stderr: ' + data);});// Simulate entering data for getchar() after 1 secondsetTimeout(function() { test.stdin.write('n');}, 1000);看起来这不是OSX上预装的,当然Windows也不可用,不过可能是类似的选择。



