node.js - 管道 ReadableStream 到子进程标准输入
问题描述
我正在尝试使用 nodejs 子进程生成 ghostscript,我想将 ReadableStream 作为标准输入传递。似乎ghostscript没有接收我的输入,这是为什么呢?我知道我可以完成所有这些同步等操作,但我希望尽可能减少内存占用。我需要在后面的步骤中进一步处理来自 ghostscript 的标准输出流。
const { spawn } = require('child_process')
const fs = require('fs')
const params = [
'-q',
'-dQUIET',
'-dSAFER',
'-dBATCH',
'-dNOPAUSE',
'-dNOPROMPT',
'-dMaxBitmap=500000000',
'-dAlignToPixels=0',
'-dGridFitTT=2',
'-sDEVICE=pngalpha',
'-dTextAlphaBits=4',
'-dGraphicsAlphaBits=4',
'-sOutputFile=%stdout', //output to stdout
'-' // get input from stdin
]
const stream = var readStream = fs.createReadStream('myfile.eps')
const gs = spawn('gs', params)
stream.pipe(gs.stdin)
ls.stdout.on("data", (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on("data", (data) => {
console.error(`stderr: ${data}`);
});
ls.on("close", (code) => {
console.log(`child process exited with code ${code}`);
});
解决方案
推荐阅读
- c - 代码在 C 中没有用户输入就跳到换行符
- python - 如何使用 pytest 捕获日志标准输出输出?
- java - 在简单的键值数据存储中实现键搜索(通过前缀、后缀和正则表达式)
- python-3.x - Python单元测试找不到模块
- react-tsx - “typeof React”类型上不存在属性“FC”
- apache-spark - Spark:Vectorassembler 抛出错误 org.apache.spark.SparkException:作业因阶段失败而中止:
- c# - 下面的表达式在 nodeJS 中的等价物是什么?
- java - zk 边框布局调整大小事件
- scala - 使用scalaj http库时如何提取SSO cookie
- java - 如何使用 Java ProcessBuilder API 运行交互式 bash?