Articles of child process

如何获得Node.JS中产生的child_process的输出?

首先,我是一个完整的noob,昨天开始使用Node.JS(这也是我第一次使用Linux在几年),所以请不错,明确 我目前正在做一个Node.JS程序,其中包括启动shell命令(主要是:挂载一个USB驱动器)。 我目前正在使用 var spawn = require('child_process').spawnSync; function shspawn(command) { spawn('sh', ['-c', command], { stdio: 'inherit' }); } shspawn('echo Hello world'); shspawn('mkdir newdir'); 等等,这对我来说是一个非常舒适的方式。 问题是,我想存储的输出,例如,一个“ls”命令在一个variables,像 var result = shspawn('ls -l') 我已经在网上阅读了一些例子,但很less使用产卵,当他们这样做时,它不适用于我(我想我可能做错了什么,但我又是一个在节点noob) 如果你们有比使用child_process_spawnSync更好的主意,我打开任何想法,但我希望尽可能长时间保持我的程序包免费:) 编辑:我需要它同步工作! 这就是为什么我开始使用spawnSync。 我将使用一些像dd这样的命令,这需要时间,并且在程序移动到另一个命令之前需要完全完成。

包含在可返回的生成器中的nodejs child_process.spawnSync或child_process.spawn返回输出

因为有一段时间我正在努力达到目前为止还没有解决的问题。 使用nodejs,我喜欢在命令退出后运行交互式sh命令并使用sh命令输出。 我喜欢编写一个可收缩的generator函数来封装交互式shell命令的运行并返回shell命令的输出。 方法1:shelljs shelljs 我用shelljs取得了一些成功,但是在某些时候它不会跑得更远。 问题1:是否有可能获得shelljs到我可以inheritancestdio并使shelljs函数可屈服的点? 方法2:child_process.spawnSync child_process.spawnSync 最后我发现了child_process.spawnSync并很高兴,至less我可以运行交互式sh命令而不会出现任何问题options: { stdio: 'inherit' } 但我还没有find如何取回child_process.spawnSync的输出。 问题2:如何将spawnSync封装到返回child_process输出的生成器函数中? 方法3:共同子女过程 我也试过共同子女的过程 。 它似乎运行,但不与stdio互动。 有这个问题 ,我真的不明白。 问题3:有人可以解释我/发表一个例子如何共同subprocess将与stdioinheritance工作。 方法4:用蓝鸟promisify child_process.spawn() 我打开蓝鸟的问题 ,如果child_process.spawn()是promisifiable 所以我的问题。 有人可以给我一个例子,说明如何运行一个交互式shell命令,该命令可以封装在一个返回shell命令输出的可生成生成器函数中? 我很乐意接受新的方法。 我创build了一个在github上可用的npm模块,你可以将它分叉并贡献。 thx提前。

AWS Lambda函数中spawn child_process的SIGSEGV

我试图在AWS Lambda函数中产生一个同步subprocess(用于运行ffprobe),但它几乎立即(200毫秒)通过SIGSEGV信号死亡。 我对分段错误的理解是,它是一个尝试访问不允许访问的内存的进程。 我试图增加内存到1024MB(我使用128MB,因为每个执行只使用约56MB),但这并没有改变任何东西。 我知道我不是唯一有此问题的人: https : //forums.aws.amazon.com/thread.jspa?threadID=229397 任何人都知道如何解决此问题? 更新25/4/2016 为了清楚起见,我正在运行的代码是: import { spawnSync } from 'child_process'; exports.handler = (event, context) => { process.env.PATH = `${process.env.PATH}:${process.env.LAMBDA_TASK_ROOT}`; const ffprobe = './ffprobe'; const bucket = event.Records[0].s3.bucket.name; const key = event.Records[0].s3.object.key; console.log(`bucket: ${bucket}`); console.log(`key: ${key}`); const url = 'http://my-clip-url.com'; // An s3 presigned url. if (!url) { throw […]

如何在Node.js中使用pdflatexsubprocess获取PDF作为stream?

这是我的文件: . ├── app.js ├── res.cls └── res.tex 这里是我的app.js文件的相关内容: const { spawn } = require('child_process') const latex = spawn('pdflatex', ['res.tex']) 成功运行此代码将在同一个目录中创build一个res.pdf文件。 但是,我不想创build一个文件,而是希望将PDF作为一个stream,并将其作为响应发送给浏览器。 我试图避免在服务器中创build任何PDF文件 ,我只是想立即发送生成的PDF作为响应。 是否有可能改变这个代码来做到这一点?

节点subprocess事件监听

我使用节点child_process API https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options var child = child_process.spawn(cmd, val, options); 从孩子我使用以下 child.stdout.pipe(process.stdout); child.stderr.pipe(process.stderr); 我可以在这些pipe道事件里面添加一些像console.log这样的代码吗? 例如可能与原型 child.on('error', function(err) { console.log(err); }); 更新 我需要的是听这个childProcess.stderr.pipe(process.stderr); 如果我得到和错误做process.exit(1) 当我尝试像我有错误的东西 child.stderr.pipe(function () { console.log("im here"); process.stderr; process.exit(1); } ); UPDATE2 我尝试以下 var child = child_process.spawn(cmd, value, opt); child.stdout.on('data', function (data) { console.log("IM HERE"); console.log('data' + data); }); child.stderr.on('data', function (data) { console.log("IM […]

节点js从不同的进程获取和设置数据

我已经完成了产生(subprocess)的节点应用程序和应用程序,应用程序有主机和端口: var exec = require('child_process').spawn; var child = exec('start app'); console.log("Child Proc ID " + child.pid) child.stdout.on('data', function(data) { console.log('stdout: ' + data); }); child.stderr.on('data', function(data) { console.log('stdout: ' + data); }); child.on('close', function(code) { console.log('closing code: ' + code); }); 一些应用程序将立即开始,一些应用程序将需要一些时间10 – 20秒,直到他们开始 。 现在我使用节点http代理来运行应用程序,问题是,当使用希望在运行之前运行应用程序,我得到错误。 任何想法如何以某种方式我可以解决这个问题? proxy.on('error', function (err, req, res) { res.end('Cannot run […]