C++ 在Windows(C)中抑制system()调用的标准输出

C++ 在Windows(C)中抑制system()调用的标准输出,c++,c,windows,mingw,C++,C,Windows,Mingw,我有一段跨平台的代码,需要启动一个单独的进程,为了便于使用,我使用了system()调用,因为它是跨平台的,但是在Windows中,我找不到一种方法来停止进入终端窗口的system()调用中的stdout 这是非常恼人的,因为系统调用启动的.exe有很多没有意义的输出,这些输出不能用选项静音 代码如下: std::system("wgrib2 C:/Inputs/HRES_ENS_2014032500+000.grib2 -lola -8.0:140:0.1 48.0:140:0.1 C:/In

我有一段跨平台的代码,需要启动一个单独的进程,为了便于使用,我使用了system()调用,因为它是跨平台的,但是在Windows中,我找不到一种方法来停止进入终端窗口的system()调用中的stdout

这是非常恼人的,因为系统调用启动的.exe有很多没有意义的输出,这些输出不能用选项静音

代码如下:

std::system("wgrib2 C:/Inputs/HRES_ENS_2014032500+000.grib2 -lola -8.0:140:0.1 48.0:140:0.1 C:/Inputs/HRES_ENS_2014032500+000.bin bin -for 2:2:1");

如果有什么不同,我使用minGW作为编译器。

你能将输出重定向到一个临时文件吗?这对你的程序来说不是很好吗?你试过NUL了吗?这应该会抑制输出。是的,谢谢,我已经尝试过了,但它不完全起作用,它会将函数ok的标准输出传递到文本文件(或传递到NULL),但出现的任何警告仍会进入终端窗口。要抑制错误和正常输出,请使用
>NUL 2>&1