我在win32 exe中执行::system("del *.log")
上面的代码将输出打印到exe控制台。
如何抑制输出到控制台的输出?
答案 0 :(得分:8)
使用重定向并将stdout重定向到nul文件:
::system("del *.log > nul")
“nul”是一个存在于所有目录中的隐藏文件,它所做的就是丢弃写入它的所有内容。
这仍然会显示错误(如果有的话)。如果你还想抑制stderr,那么:
::system("del *.log > nul 2>&1")
答案 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")