Articles of spawn

节点产生进程和存储输出

我的脚本的这一部分正试图产生一个克隆硬盘驱动器的孩子。 它基本上工作,但我遇到的问题是,当我遇到一个错误,并希望存储输出,它只存储输出的第一行,排除我实际需要的东西。 我已经在脚本之外运行了这个命令,它给了我两行输出,如果失败,第二行是错误。 那么,我怎么能存储整个输出。 非常感谢帮助,谢谢! NtfsPartition.prototype.WriteFs = function(filename, progress, success, error) { console.log('Writing NTFS FS'); var s = spawn("ntfsclone", ['–restore-image', '–overwrite', this.dev, filename]); var err_msg = ''; s.on('error', function(err) { err_msg = err; }); s.stderr.on('data', function(data) { err_msg += data.toString(); }); s.stdout.on('data', function(data) { var match = data.toString().match(kNtfsWriteFsProgressRegex); if(!match) { return; } progress(match[1]); }); s.on('exit', […]

node.js:使用exec调用的外部脚本会在我使用spawn的时候提前终止

当我使用节点来启动我的扫描仪时,它可以完美地工作: var exec = require("child_process").exec; function scanner(response) { console.log("Request handler 'scanner' was called."); exec("scanimage –source 'Flatbed' -pv –format tiff –batch=$(date +%Y%m%d_%H%M%S)_p%04d.tiff –resolution 300 –batch-count=1", function (error, stdout, stderr) { console.log('stdout: ' + stdout); console.log('stderr: ' + stderr); response.end(); }); } 扫描工作,这个输出写成: Request handler 'scanner' was called. stdout: stdout: Scanning 1 pages, incrementing by 1, numbering […]

Socket.IO,SSL问题与cloudflare

我有一个socket.io应用程序,基本上从前端接收信号,以杀死和启动一个新的ffmpeg进程(基于.spawn())。 一切都像预期的那样工作,但是我经常从cloudflare中得到一个525错误。 错误消息是:Cloudflare无法build立与原始服务器的SSL连接。 它的工作原理是10次中的9次。我注意到,只要kill + spawn完成,就会出现更多的这些错误。 难道是事件阻塞事件循环,并因为这阻止所有传入的请求和cloudflarelogging这些握手失败错误? 联系cloudflare支持让我回到这个信息(这是他们对我的服务器的要求): Time id host message upstream 2017-08-16T09:14:24.000Z 38f34880faf04433 xxxxxx.com:2096 peer closed connection in SSL handshake while SSL handshaking to upstream https://xxx.xxx.xxx.xxx:2096/socket.io/?EIO=3&transport=polling&t=LtgKens 我现在正在debugging一段时间,但似乎无法自己find解决scheme。 这是我如何初始化我的socketIO服务器。 /** * Start the socket server */ var startSocketIO = function() { var ssl_options = { key: fs.readFileSync(sslConfig.keyFile, 'utf8'), cert: fs.readFileSync(sslConfig.certificateFile, 'utf8') }; self.app = […]

NodeJS:subprocess事件

var spawn = require("child_process").spawn; var child = spawn("scp" , ["-P9022", path_to_file, scp_remote_path]) child.stdout.on("data", function(){ //Automatically type in password }) 我试图scp到一个删除服务器和自动密码input(我知道,我应该使用公共密钥authentication,而不是重点)。 当我运行显示的代码时,我得到正确的密码提示; 无论如何,我可以通过代码检测到提示的存在吗? 在这种情况下,“数据”事件似乎没有被触发。 编辑:不知道这是否重要,但process.stdout.isTTY是真的。 当然,我然后试着像process.stdin一样听可读的事件 process.stdin.on "readable", ()-> buf = process.stdin.read() buf2 = process.stdout.read() console.log "pin", buf, buf2 callback被调用,但是buf和buf2都是空的

试图从节点产生rubysass

我有一个名为sassy.js的脚本 var spawn = require('child_process').spawn, rubySass = spawn('sass', ['–watch scss:.tmp/css', '–sourcemap=auto', '–style=expanded', '–unix-newlines']); 我尝试使用节点sassy.js运行 $ node sassy.js events.js:85 throw er; // Unhandled 'error' event ^ Error: spawn sass ENOENT at exports._errnoException (util.js:746:11) at Process.ChildProcess._handle.onexit (child_process.js:1053:32) at child_process.js:1144:20 at process._tickCallback (node.js:355:11) at Function.Module.runMain (module.js:503:11) at startup (node.js:129:16) at node.js:814:3 这很奇怪,因为这个代码工作: var exec = require('child_process').exec, rubySass = […]

ImageMagick比较:从Node.js生成时退出代码1,但从命令行运行时退出代码0

$ compare –version Version: ImageMagick 6.9.1-1 Q16 x86_64 2015-04-15 http://www.imagemagick.org Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC License: http://www.imagemagick.org/script/license.php Features: DPC Modules Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png xml zlib $ node –version v0.10.33 我正在写一个Node.js脚本来为我自动处理一些图像。 当我尝试通过child-process.exec或child-process.spawn运行脚本时,它运行并正确完成,但是以代码1退出,而不是在脚本中引发错误的代码0。 当我在命令行上运行相同的脚本时,它将以代码0退出。 compare命令确实通过stderr返回的东西,这似乎是默认情况下,但我不需要该输出,如果需要的话,可以被压制。 我已经尝试添加 – -quiet没有区别。 这里的Node脚本为child-process.spawn (我也试过使用child-process.exec ): var spawn = require("child-process-promise").spawn, filenameA = "img0.png", filenameB […]

如何杀死在nightwatch中生成的进程globals.js before:function在after:函数中

我是nightwatch和node.js的新手,需要下面的帮助。 我在前函数中产生一个subprocess作为设置的守夜的一部分,并且想要在函数(拆卸)之前终止进程。 我怎么做。 我不确定使用x.kill。 module.exports = { before: function(done) { spawn = require('child_process').spawn; var x = spawn('./abc'); done(); }, after: function(done) { done(); //how to kill x spawned in before function. } }

在Ubuntu上的React本机入门套件安装期间,spawn-sync post安装失败

我试图在Ubuntu 14.04.4上安装一个React本地入门工具包(Ignite),并继续得到产卵同步安装后失败。 此前有Eaccess的问题,我通过在这个video中的指示, https://docs.npmjs.com/getting-started/fixing-npm-permissions 节点版本 – v6.3.0 npm版本 – 3.10.3点燃 – https://github.com/infinitered/ignite 当我尝试全局安装点燃,我收到以下错误, npm WARN deprecated cross-spawn-async@2.2.4: cross-spawn no longer requires a build toolchain, use it instead! npm WARN deprecated npmconf@2.1.2: this package has been reintegrated into npm and is now out of date with respect to npm /root/.npm-global/bin/ignite -> /root/.npm-global/lib/node_modules/react-native-ignite/index.js spawn-sync@1.0.15 postinstall /root/.npm-global/lib/node_modules/react-native-ignite/node_modules/spawn-sync node […]

通过spawn从python返回JSON

我有一个Python脚本,需要两个参数; 一个目录和一个文件名。 python脚本将从提供的目录中的特定文件中创build一个JSON对象,并将其作为第二个参数保存。 但是如果第二个参数等于string“stream”,则JSON数据被输出到STDOUT。 我编写了一个节点脚本,它生成一个subprocess,从terminal调用python脚本,并按预期工作。 "use strict"; const spawn = require("child_process").spawn; const command = "(path to python)"; const loc = "(path to .py script)"; const acct = process.argv[2]; const output = process.argv[3]; let callPy = spawn(command, ["erik.py", acct, output], { cwd: loc, stdio: "pipe" }); callPy.stdout.on("data", (data) => { if (data.toString() === "success") { console.log(acct, […]

从节点收听ConsoleTraceListener日志

我已经写了示例应用程序打印日志到ConsoleTraceListener 。 根据MSDN , ConsoleTraceListener应该redirect到标准输出。 我从节点spawn这个进程,并试图听stdout ,它无法获取信息。 任何想法如何解决这个问题? 我想将TraceListener传送到节点 C#: Trace.Listeners.Add(new ConsoleTraceListener(true)); Trace.AutoFlush = true; Console.WriteLine("This comes out"); Trace.WriteLine("oops"); Trace.TraceInformation("Getting lost"); Thread.Sleep(5000); Console.WriteLine("Stopping comes out"); 节点: let proc = ps.spawn("sample.exe"); proc.stdout.on('data', (c) => { console.log(c.toString()); }); proc.stderr.on('err', (c) => { console.log(c.toString()); });