Tag: stdout

将stdout和stderr组合成一个node.jsstream

我想将一个subprocess的stdout和stderr合并成一个单一的中间stream,然后我可以使用它并进行处理。 这是可能的标准的API? (我意识到交错两个stream有细微的差别,我需要它们只在行结束时交错才行。比如,写一行到stdout或stderr应该是一个primefaces操作)。

ChildProcess:stdin没有被Python readline读取

我正在试图通过使用child_process stdin / out从Node的Python脚本进行交互,如下所示: var p = require('child_process').spawn('python', ['test_io.py']); p.stdout.on('data', function(data) { console.log(data.toString()); }); p.stdin.write('thing'); 这是相关的Python部分: import io import sys _input = io.open(sys.stdin.fileno()) _output = io.open(sys.stdout.fileno(), 'w') while True: _output.write(_input.readline()) 但是,现在看来,Python脚本并不是通过stdin.write读取“东西”。 这些写不应该缓冲? 我在这里做错了什么。 提前致谢。

在退出之前在Node.js进程中刷新/放弃stdout / stderr

有没有一种防火的方法来保证Node.js进程中的所有stdout和stderr在允许Node.js进程完全终止之前已经到达目的地(尽可能多)? 在某些情况下,我始终认为stdout和stderr在终止之前无法使其脱离node.js进程。 我在想的是: process.once('exit', function(){ // use some synchronous call to flush or drain stdout and stderr }); 有人发现一个绝对的方法来做到这一点? 大多数情况下,我没有看到这个问题发生,但我只是寻找任何可能的方式,我可以添加一些额外的保险。

child_process.spawn标准输出块

我想在Linux上运行一个二进制文件,通过标准输出。 如果我从terminal运行它,我会得到一个美丽的数据stream打印出来(每50毫秒接近一行),但是如果我使用child_process.spawn从一个nodeJS脚本运行它,那么数据每隔5秒左右到达一个块。 代码片段: const spawn = require('child_process').spawn; // Run all node binaries for (let i = 0; i < config.dependencies.length; i++) { // Get details on this binary var repo = config.dependencies[i].name; var version = config.dependencies[i].version; console.log("Running: " + repo + ' version ' + version); // Run this binary node_process[i] = spawn('./'+repo+'/'+repo,[], {stdio: ['pipe', […]

STDOUT在STDIN前面提示?

我有一个setInterval每秒logging时间。 我想用STDIN来执行脚本中的命令,但是STDOUT在我input的时候正在移动光标,并把它自己放到提示符中。 我没有太多的提示经验,刚开始潜水。 脚本: setInterval(function(){ console.log(new Date().toUTCString()); },1000) var readline = require('readline'); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question("Hi there, how are you?", function(answer) { }); 输出: Hi there, how are you?Mon, 17 Dec 2012 16:20:34 GMT fine Mon, 17 Dec 2012 16:20:35 GMT Mon, 17 Dec 2012 16:20:36 GMT Mon, 17 […]

如何从nodejs中的phantomjs stdout中读取图像来提供它?

可能有些细节我缺less,因为光栅化脚本可以很好地独立运行,但是到目前为止,我还没有成功地从NodeJS读取它的输出。 这是NodeJS的一部分: var http = require('http'); var qs = require('querystring'); var fs = require('fs'); var spawn = require('child_process').spawn; var SCRIPT = fs.readFileSync('./script.js', { encoding: 'utf8' }); http.createServer(function (request, response) { var body = ''; request.on('data', function (data) { body += data; }); request.on('end', function () { var postData = qs.parse(body); var phantomOut = ''; var […]

当从C#调用Edge.js时,如何钩住stdout和stderr?

背景 我正在通过Process.Start()运行Node的C#程序。 我从这个subprocess捕获stdout和stderr,并根据我自己的原因redirect它。 我正在考虑用一个调用Edge.js代替Node.exe的调用。 为了能够做到这一点,我必须能够可靠地捕获在Edge中运行的Javascript的标准输出和标准错误,并将消息传回到我的C#应用​​程序中。 方法1 我会描述这种方法的完整性,以防有人推荐它:) 如果Edge进程终止,则只需简单地声明一个msgs数组,并用新的函数覆盖process.stdout.write和process.stderr.write来处理这个问题是相当容易的,这些函数会在该数组上累积消息,最后只需返回消息数组。 例: var msgs = []; process.stdout.write = function (string) { msgs.push({ stream: 'o', message : string }); }; process.stderr.write = function (string) { msgs.push({ stream: 'e', message: string }); }; // Return to caller. var result = { messages: msgs; …other stuff… }; callback(null, result); 显然这只有在Edge代码终止的情况下才有效,在最坏的情况下,消息可能会变大。 但是,它很可能会performance良好,因为只有一个编组调用才能获取所有消息。 […]

NodeJSsubprocess标准输出都是数字

我正在写一些node.js脚本来启动一个subprocess。 代码片段如下。 var spawn = require('child_process').spawn; var child = spawn ('node', ['script.js']) child.stdout.on('data', function (data) { logger.verbose('tail output: ' + JSON.stringify(data)); } ); child.stderr.on('data', function (data) { logger.error('err data: ' + data); } ); 脚本运行良好,除了subprocess的stdout和stderr仅输出数字输出: 示例输出: 108,34,44,34,105,110,99,114,101,97,109,101,110,116,97,108,95,112,111,108,108,105 如何将这些数值转换为可读的string? 谢谢。

node.js child_process.spawn没有标准输出,除非“inheritance”

我试图从node.js (0.10.29)捕获spawn child_process stdout。 现在我只是试着用ping 下面的代码不打印(但是ping) var exec = require('child_process').exec; var spawn = require('child_process').spawn; var util = require('util') var ping = spawn('ping', ['127.0.0.1'], {stdio: 'pipe'}); ping.stdout.on('data', function(data){ util.print(data); }) ping.stderr.on('data', function(data){ util.print(data); }) 如果我改变stdio: 'pipe'到stdio: 'inherit'并摆脱stdout/stderr钩子如下: var ping = spawn('ping', ['127.0.0.2'], {stdio: 'inherit'}); // ping.stdout.on('data', function(data){ // util.print(data); // }) // ping.stderr.on('data', function(data){ // util.print(data); […]

NodeJS产生标准输出string格式

我在节点中产生一个进程,跟踪这个命令的输出: proc.stdout.on("data", function (data) { console.log(data.toString()); }); 它运作良好,但是,输出似乎是分裂的线路: npm http 304 https://registry.npmjs.org/underscore 以上只是npm install响应的一行。 通常情况下,这一切都在一行中,这也是在响应之前和之后添加换行符。 有没有办法让数据输出看起来像标准运行,即逐行?