Tag: stdout

在脱壳节点时保留输出颜色

我有一个小Grunt任务,通过节点popup,并运行“composer php安装”。 var done = this.async(); var exec = require('child_process').exec; var composer = exec( 'php bin/composer.phar install', function(error, stdout, stderr) { done(error===null); } ); composer.stdout.on( 'data', grunt.log.write ); 正如你所看到的,我将这个subprocess的stdout输出到grunt.log。 除了输出全部以我的默认控制台颜色显示之外,所有的输出都如预期般显示出色。 如果我直接运行“composer php安装”,我会突出显示,提高可读性。 由于我对节点,Grunt以及一般情况下的新手很陌生,因此我不确定系统的哪个部分颜色会丢失,甚至不知道如何高效地进行debugging。

Node.js child_process exec的标准输出被缩短

在Node.js中,我使用了child_process模块​​的exec命令来调用Java中的一个algorithm,该algorithm返回大量的文本,然后parsing和使用。 我能够捕捉它,但是当它超过一定数量的行,内容被截断。 exec("sh target/bin/solver "+fields.dimx+" "+fields.dimy, function(error, stdout, stderr){ //do stuff with stdout } 我已经尝试过使用setTimeouts和callback,但没有成功,但我确实感到这是因为我引用标准输出之前,它可以完全检索我的代码。 我已经testing过,stdout实际上是数据丢失首先发生的地方。 这不是一个asynchronous的问题。 我也在我的本地机器和Heroku上testing过,并且发生完全相同的问题,每次都在同一行号码处截断。 任何想法或build议可能有助于这个?

node.js使用单独的stdout和stderrstream交互式产生一个subprocess

考虑下面的C程序(test.c): #include <stdio.h> int main() { printf("string out 1\n"); fprintf(stderr, "string err 1\n"); getchar(); printf("string out 2\n"); fprintf(stderr, "string err 2\n"); fclose(stdout); } 哪一个应该打印一行stdout,一行stderr,然后等待用户input,然后另一行stdout和另一行stderr。 非常基本! 在编译并在命令行上运行时,程序输出完成时(用户input为getchar()): $ ./test string out 1 string err 1 string out 2 string err 2 当试图用下面的代码使用nodejs产生这个程序作为subprocess时: var TEST_EXEC = './test'; var spawn = require('child_process').spawn; var test = spawn(TEST_EXEC); test.stdout.on('data', function […]

错误:在pipe道节点输出为“|”时写入EPIPE 头”

我遇到了错误: events.js:48 throw arguments[1]; // Unhandled 'error' event ^ Error: write EPIPE at errnoException (net.js:670:11) at Object.afterWrite [as oncomplete] (net.js:503:19) 当pipe道输出到头。 一个简单的例子是: console.log('some string'); … the same for 20 lines 然后node test.js | head node test.js | head得到错误,这似乎出现在Ubuntu 12.04运行约70%。 有什么问题?