如何将合并流传递给生成进程的stdin?

时间:2017-10-09 19:40:30

标签: node.js

我想编写一个包装器程序,将通过websocket接收的文本注入到生成的进程中 我试过这样的事情

const { spawn } = require('child_process');
const cmd = spawn(cmdname, {stdio:"inherit"})
// cmd.stdin is null

但是我需要cmd.stdin所以我尝试了以下但是它不起作用我不知道什么是错的。例如,对于cmdname=python3,它应该像repl一样,但事实并非如此。

const { spawn } = require('child_process');
const cmd = spawn(cmdname, {stdio:["pipe", 1, 2]})
process.stdin.pipe(cmd.stdin)

//var websocket = require('websocket-stream')
//var mergeStream = require('merge-stream')
//var wss = websocket.createServer({
//  perMessageDeflate: false,
//  port: opts.port
//}, handle)

//function handle(wstream) {
//  mergeStream(wstream,process.stdin).pipe(cmd.stdin);
//}

由于上述问题,我没有测试合并部分。 我的节点版本是v8.6.0,如果那是相关的

1 个答案:

答案 0 :(得分:0)

问题是我必须将-i放入args

const cmd = spawn("python3",["-i"], {stdio:["pipe", 1, 2]})

我并不需要合并流。

这是完整的代码:replwrap