Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C编译二进制文件的Nodejs exec在stdout上显示stderr?_C_Node.js_Stdout_Stderr - Fatal编程技术网

C编译二进制文件的Nodejs exec在stdout上显示stderr?

C编译二进制文件的Nodejs exec在stdout上显示stderr?,c,node.js,stdout,stderr,C,Node.js,Stdout,Stderr,我基本上有一个C编译的二进制文件,如果在执行过程中遇到错误,错误会被转储到stderr。这个C二进制文件被包装在NodeJ中,在NodeJ中,二进制文件通过子进程exec调用。但一旦出错,即使C代码将信息转储到stderr,我似乎仍然在stdout上的Nodejs中获取信息,而不是在stderr上。因此,基本上运行console.logstdout;转储错误信息,但不包括console.logstderr;什么也不扔。有人对此有什么想法吗?如果我需要通过另一种媒介重定向此信息,以便在NodeJS

我基本上有一个C编译的二进制文件,如果在执行过程中遇到错误,错误会被转储到stderr。这个C二进制文件被包装在NodeJ中,在NodeJ中,二进制文件通过子进程exec调用。但一旦出错,即使C代码将信息转储到stderr,我似乎仍然在stdout上的Nodejs中获取信息,而不是在stderr上。因此,基本上运行console.logstdout;转储错误信息,但不包括console.logstderr;什么也不扔。有人对此有什么想法吗?如果我需要通过另一种媒介重定向此信息,以便在NodeJS脚本上获得有关stdout和stderr的适当信息

我创建了代码的测试版本,它似乎在stderr和stdout上正确显示了信息:

#include <stdio.h>
int main(){
 fprintf(stderr, "Whoops, this is stderr");
 fprintf(stdout, "Whoops, this is stdout");
 return 0;
}
这是我得到的输出:

Whoops, this is stdout
stdout: Whoops, this is stdout
stderr: Whoops, this is stderr

不确定为什么会在我的代码中出现这种情况,可能是因为我同时将大量信息转储到stdout和stderr,或者我包含的某些错误模块可能导致这种情况发生。在这里编写的实际代码相当大,但似乎我必须调查可能出错的地方。

我似乎已经解决了问题。转储信息的遗留C代码从未引用传递到它的文件*。这就是为什么所有信息都出现在stdout而不是stderr上的原因。修复了将FILE*作为参数并将信息转储到正确的文件指针的API,现在它可以工作了。

您可以向我们展示您的代码吗?另外,您是否为生成的进程尝试了stderr的事件处理程序?例如:my_-spoked_-process.stderr.on'data',function dat{console.logdat}感谢@user2524973的帮助,请参阅我发布的答案:很高兴你把它整理好了:
Whoops, this is stdout
stdout: Whoops, this is stdout
stderr: Whoops, this is stderr