当前位置: 首页 > 面试题库 >

如何通过NodeJS子进程运行命令?

孙胜泫
2023-03-14
问题内容

我正在尝试通过NodeJS子进程在Windows上运行命令:

var terminal = require('child_process').spawn('cmd');

terminal.stdout.on('data', function (data) {
    console.log('stdout: ' + data);
});

terminal.stderr.on('data', function (data) {
    console.log('stderr: ' + data);
});

terminal.on('exit', function (code) {
    console.log('child process exited with code ' + code);
});

setTimeout(function() {
    terminal.stdin.write('echo %PATH%');
}, 2000);

当它调用时ti.stdin.write,它将其写入stdin描述符,但是此时我如何触发cmd响应?当您实际在命令提示符下键入命令时,如何发送“输入”键信号?目前我没有收到任何回应cmd


问题答案:

发送换行符\n将执行该命令。.end()将退出外壳。

我在OSX上修改了该示例以使其与bash一起使用。

var terminal = require('child_process').spawn('bash');

terminal.stdout.on('data', function (data) {
    console.log('stdout: ' + data);
});

terminal.on('exit', function (code) {
    console.log('child process exited with code ' + code);
});

setTimeout(function() {
    console.log('Sending stdin to terminal');
    terminal.stdin.write('echo "Hello $USER. Your machine runs since:"\n');
    terminal.stdin.write('uptime\n');
    console.log('Ending terminal session');
    terminal.stdin.end();
}, 1000);

输出将是:

Sending stdin to terminal
Ending terminal session
stdout: Hello root. Your machine runs since:
stdout: 9:47  up 50 mins, 2 users, load averages: 1.75 1.58 1.42
child process exited with code 0


 类似资料:
  • 我正试图用脚本方法安装一个模块,但我不知道如何用节点脚本语言安装,或者如果你有任何想法请与我分享。

  • 问题内容: 我试图打开从一个Linux盒到另一个Linux盒的SSH管道,运行一些shell命令,然后关闭SSH。 我无法控制任何一个盒子上的包装,所以像织物或paramiko之类的东西就不成问题了。 我很幸运使用下面的代码来运行一个bash命令,在本例中为“正常运行时间”,但不确定如何再发出一个命令。我期望的是: 我缺少子流程模块的哪一部分? 谢谢 问题答案: 基本上,如果您调用子进程,它将创建

  • 我想用nodejs打开googlechrome,但我得到了这个错误(我使用了execFile和spawn), 密码

  • 一些注意事项: 1。我最初使用的TestNG jar来自java项目中的maven repo。下面的所有方法都是用maven testNG jar和新的TestNG6.9.12下载进行测试的。 2。我可以从Eclipse中运行这个文件。只有当我尝试从命令行运行时才有问题。 3。最终目标是通过javafx应用程序按钮触发命令行来运行测试。如果提供的解决方案避免在cmd中键入绝对路径,因为应用程序将在

  • 问题内容: 我已经编写了以下代码,但还不太清楚如何解决该错误。不知道这些信息是否有用,但是我使用的是Mac,并且使用的是IntelliJ编辑器。 结果是“线程“主”中的异常java.io.IOException:无法运行程序“ adb”:error = 2,没有这样的文件或目录” 但是,当我从终端运行命令“ adb devicees”时,将获得连接到计算机的设备列表。 对于那些感兴趣的人,以下是完

  • 知道为什么我不能使用气流运行docker吗? 使用运行气流的用户,相同的docker命令可以从终端正常运行。因此,Linux端没有权限问题。 但当把它放进气流dag时,它会抱怨 docker:尝试连接到位于的docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock:邮递http:///var/run/docker.sock/v1.39/containers/c