2

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

4

3 回答 3

8

使用重定向并将标准输出重定向到 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

于 2013-04-27T08:33:52.473 回答
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);
于 2013-04-27T08:42:28.537 回答
1

尝试这个:

::system("del *.log > nul") 
于 2013-04-27T08:32:51.823 回答