if判断目录 linux,Linux API 判断目录是否存在

//create folder

struct stat statbuf;

if ( 0 != stat("./myfolder",&statbuf))   //If failed to get the status of this directory

{

if (ENOENT == errno) //If folder  not exist

{

if (-1 == mkdir("./myfolder",S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH|S_IXOTH)) {     -------------注意这里设置的mode并不是最终myfolder的mode,他是mode与系统umask计算后的值,即是个不确定的值。所以我们在创建完目录后通过api chmod再来设置一下目录的权限。

cout << "Failed to create folder in current directory." << endl;

}

if (-1 == chmod("./myfolder",S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH|S_IXOTH)) { -----------------注意,API中mode不能用类似777这样的值,必须用S_IRUSR这种系统定义的常量。                            cout << errno << endl;

}

}

else

{

cout << "Failed to create  folder myfolder in current directory." << endl;

}

}

另外可以通过stat获取状态后判断一个对象是否为目录或是文件

if(S_ISDIR(buf.st_mode))  //check whether its directory

{

ptr = "directory";

}

S_ISDIR 只是一个 macro 而已,buf.st_mode 和特定的mask 进行 & 运算,判断结果是否为特定的值。

c++并不提供这种对目录的操作,但是linux的API是支持的。通过 man 2 mkdir即可查看API的详细说明。

man帮助分为好几章,第一章为command,默认man查询时为man 1,即查询命令;

第二章为system calls,即系统调用,即我们通常所说的系统的API;

第三章为library functions,即c语言等的库函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值