禁用系统(“mkdir / a / b”)呼叫输出

时间:2012-11-01 11:15:43

标签: c++ linux system

一个简单的问题: 我正在使用

system("mkdir /some/dest/");

我的节目。如何在运行程序时禁用其输出到屏幕,因为如果dir存在,我得到“mkdir:无法创建目录`/ some / dest /':文件存在”

试图跑

system("mkdir /some/dest/ > /dev/null");

但它无效

由于

2 个答案:

答案 0 :(得分:5)

从C代码创建目录是一种奇怪的方式,考虑到mkdir (1)本身只是mkdir (2)系统调用的包装。

我建议使用mkdir (2)

P.S。 (2)我的意思是man类别的文档($ man 2 mkdir),这是系统调用的类别。

答案 1 :(得分:1)

有两个流,stdout和stderr。你只重定向strout,而不是stderr。

您还需要将stderr重定向到/ dev / null;阅读你的shell手册。在bash中,我认为你可以这样做:

mkdir /some/dest/ &> /dev/null

这回答了关于如何在调用system()时隐藏错误消息的问题,但是其他答案的建议(使用本机C函数mkdir)更多是C / C ++惯用语。