命令行和 Node.js 通信(不关闭)

Posted

技术标签:

【中文标题】命令行和 Node.js 通信(不关闭)【英文标题】:command line and Node.js communication (without closing) 【发布时间】:2019-10-18 20:33:41 【问题描述】:

我一直在查看documentation,但我找不到将命令传递到命令行 (cmd.exe) 而不在最后关闭它的方法。如何“连续”地与命令行通信?

我注意到了 fork 功能,但它似乎只适用于 node.js 模块..

const  spawn  = require('child_process');
const ls = spawn('C:\\Windows\\System32\\cmd', ['/c', 'echo hello']);

ls.stdout.on('data', (data) => 
  console.log(`stdout: $data`);
);

ls.stderr.on('data', (data) => 
  console.log(`stderr: $data`);
);

ls.on('close', (code) => 
  console.log(`child process exited with code $code`);
);

结果:

stdout: hello

child process exited with code 0 // I dont want it to exit yet!

【问题讨论】:

【参考方案1】:

最后还是很简单的。只需生成程序并写入其stdin

const  spawn  = require('child_process');
const child = spawn('C:\\Windows\\System32\\cmd.exe');

child.stdin.write('echo IM BACK\n');

child.stdout.on('data', (data) => 
    console.log(`command line says:\n$data`);
);

产生:

c:\Users\...\03 cmd.exe communcation>
command line says:
echo IM BACK
IM BACK

也可以添加“回声关闭”

【讨论】:

以上是关于命令行和 Node.js 通信(不关闭)的主要内容,如果未能解决你的问题,请参考以下文章

node.js教程基础:node.js命令行选项

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?