【发布时间】:2020-10-06 04:10:35
【问题描述】:
上下文
编写串行监视器来收听 Arduino 并不难。使用端口名称和波特率的命令行参数启动它很简单,因此从 Node 配置和启动监视器并不复杂:
child_process.exec("./monitor COM6 115200");
这个问题涉及exec、fork 和spawn,它们很相似,但我还没有掌握其中的微妙之处。除了使用参数启动之外,我还需要
- 捕获输出,以便在窗口中显示它
- 杀死子进程
- 使用不同的参数重新启动
- 刷 Arduino,然后在重启后重新启动
我使用 netcore 编写了一个控制台应用程序,它接受两个命令行参数,然后连接并侦听,回显到它的 stdout。我选择了 netcore,因为它可以在所有三个平台上运行。
问题
exec、fork 和 spawn 应该使用哪个?
如何杀死子进程?
如何捕获子进程的stdout?
Node 文档谈到了 kill method on a subprocess object。该页面上的示例代码暗示该对象由spawn 返回,但是当我使用 spawn 时,它似乎静默失败。那或者它正在工作,但我不知道我在做什么,这就是我提出这个问题的原因。
所有这些节点代码都将成为 VSCode 扩展的一部分,所以如果你也知道那些我想将标准输出通过管道传输到 VSCode 输出通道,如果可能的话。
【问题讨论】:
标签: node.js vscode-extensions child-process kill