如何抑制输出:: system(“del * .log”)出现在控制台中

时间:2013-04-27 08:26:48

标签: c++ c

我在win32 exe中执行::system("del *.log") 上面的代码将输出打印到exe控制台。 如何抑制输出到控制台的输出?

3 个答案:

答案 0 :(得分:8)

使用重定向并将stdout重定向到nul文件:

::system("del *.log > nul")

“nul”是一个存在于所有目录中的隐藏文件,它所做的就是丢弃写入它的所有内容。

这仍然会显示错误(如果有的话)。如果你还想抑制stderr,那么:

::system("del *.log > nul 2>&1")

更多信息:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true

答案 1 :(得分:3)

在Windows上,您应该使用SHFileOperation()。可用的变量标志,例如FOF_NO_UI,用于抑制用户的视觉输出。例如:

SHFILEOPSTRUCT FileOp = {0};
FileOp.wFunc = FO_DELETE;
FileOp.pFrom = "*.log\0";
FileOp.fFlags = FOF_FILESONLY | FOF_NO_UI;
SHFileOperation(&FileOp);

答案 2 :(得分:1)

试试这个:

::system("del *.log > nul")