如何将 STDIN 传递给 node.js 子进程

编程入门 行业动态 更新时间:2024-10-03 21:22:14

<a href=https://www.elefans.com/category/jswz/34/1771359.html style=如何将 STDIN 传递给 node.js 子进程"/>

如何将 STDIN 传递给 node.js 子进程

我正在使用一个为节点包装

pandoc
的库。但我不知道如何将 STDIN 传递给子进程`execFile ...

var execFile = require('child_process').execFile;
var optipng = require('pandoc-bin').path;

// STDIN SHOULD GO HERE!
execFile(optipng, ['--from=markdown', '--to=html'], function (err, stdout, stderr) {
    console.log(err);
    console.log(stdout);
    console.log(stderr);
});

在 CLI 上它看起来像这样:

echo "# Hello World" | pandoc -f markdown -t html

更新 1

试图让它与

spawn
一起工作:

var cp = require('child_process');
var optipng = require('pandoc-bin').path;
var child = cp.spawn(optipng, ['--from=markdown', '--to=html'], { stdio: [ 0, 'pipe', 'pipe' ] });

child.stdin.write('# HELLO');
// then what?
回答如下:

spawn()
一样,
execFile()
也返回一个
ChildProcess
实例,它有一个
stdin
可写流。

作为使用

write()
和监听
data
事件的替代方法,您可以创建一个可读流,
push()
您的输入数据,然后
pipe()
它到
 child.stdin
:

var execFile = require('child_process').execFile;
var stream   = require('stream');
var optipng  = require('pandoc-bin').path;

var child = execFile(optipng, ['--from=markdown', '--to=html'], function (err, stdout, stderr) {
    console.log(err);
    console.log(stdout);
    console.log(stderr);
});

var input = '# HELLO';

var stdinStream = new stream.Readable();
stdinStream.push(input);  // Add data to the internal queue for users of the stream to consume
stdinStream.push(null);   // Signals the end of the stream (EOF)
stdinStream.pipe(child.stdin);

更多推荐

如何将 STDIN 传递给 node.js 子进程

本文发布于:2024-05-30 21:02:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770918.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何将   进程   node   STDIN   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!