linux下mkdir头文件_Linux中判断一个目录是否存在,如果不存在就创建这个目录
在操作文件目錄時我們常常會考慮如下的功能:
1、判斷文件是否存在,并判斷文件是否可寫/目錄是否存在
Linux下:
#include
int access(const char* pathname, int mode);
參數(shù)介紹:
返回值:成功0,失敗-1
pathname 是文件的路徑名+文件名
mode:指定access的作用,取值如下:
F_OK 值為0,判斷文件是否存在
X_OK 值為1,判斷對文件是可執(zhí)行權(quán)限
W_OK 值為2,判斷對文件是否有寫權(quán)限
R_OK 值為4,判斷對文件是否有讀權(quán)限
注:后三種可以使用或“|”的方式,一起使用,如W_OK|R_OK
C++(標準C++中):
頭文件:
函數(shù)原型:int _access(const char *pathname, int mode);
參數(shù):pathname 為文件路徑或目錄路徑 mode 為訪問權(quán)限(在不同系統(tǒng)中可能用不能的宏定義重新定義)
返回值:如果文件具有指定的訪問權(quán)限,則函數(shù)返回0;如果文件不存在或者不能訪問指定的權(quán)限,則返回-1.
備注:當pathname為文件時,_access函數(shù)判斷文件是否存在,并判斷文件是否可以用mode值指定的模式進行訪問。當pathname為目錄時,_access只判斷指定目錄是否存在,在Windows NT和Windows 2000中,所有的目錄都只有讀寫權(quán)限。
mode的值和含義如下所示:
00——只檢查文件是否存在
02——寫權(quán)限
04——讀權(quán)限
06——讀寫權(quán)限
注意:用?? int?? access(const?? char?? *pathname,?? int?? mode);?? 判斷有沒有此文件或目錄 --它區(qū)別不出這是文件還是目錄
用?? int?? stat(const?? char?? *file_name,?? struct?? stat?? *buf); 判斷該文件或目錄是否否存在 ;得到st_mode,然后判斷是不是目錄文件。
stat()系統(tǒng)調(diào)用看是否成功,不成功就不存在,成功判斷返回的st_mode是否是一個文件夾。
2、判斷目錄是否存在
可以使用opendir來判斷,這是比較簡單的辦法。
#include
#include
DIR *opendir(const char *name);
3、Linux下mkdir函數(shù),創(chuàng)建目錄
頭文件庫:
#include
#include
函數(shù)原型:
int mkdir(const char *pathname, mode_t mode);
函數(shù)說明:
mkdir()函數(shù)以mode方式創(chuàng)建一個以參數(shù)pathname命名的目錄,mode定義新創(chuàng)建目錄的權(quán)限。
返回值:
若目錄創(chuàng)建成功,則返回0;否則返回-1,并將錯誤記錄到全局變量errno中。
mode的值如下表:
S_IRWXU00700權(quán)限,代表該文件所有者擁有讀,寫和執(zhí)行操作的權(quán)限
S_IRUSR(S_IREAD)00400權(quán)限,代表該文件所有者擁有可讀的權(quán)限
S_IWUSR(S_IWRITE)00200權(quán)限,代表該文件所有者擁有可寫的權(quán)限
S_IXUSR(S_IEXEC)00100權(quán)限,代表該文件所有者擁有執(zhí)行的權(quán)限
S_IRWXG00070權(quán)限,代表該文件用戶組擁有讀,寫和執(zhí)行操作的權(quán)限
S_IRGRP00040權(quán)限,代表該文件用戶組擁有可讀的權(quán)限
S_IWGRP00020權(quán)限,代表該文件用戶組擁有可寫的權(quán)限
S_IXGRP00010權(quán)限,代表該文件用戶組擁有執(zhí)行的權(quán)限
S_IRWXO00007權(quán)限,代表其他用戶擁有讀,寫和執(zhí)行操作的權(quán)限
S_IROTH00004權(quán)限,代表其他用戶擁有可讀的權(quán)限
S_IWOTH00002權(quán)限,代表其他用戶擁有可寫的權(quán)限
S_IXOTH00001權(quán)限,代表其他用戶擁有執(zhí)行的權(quán)限
int32_t OpendirAndMkdir(const char * pathname)
{
int ret = 0;
DIR * mydir = NULL;
if ((mydir = opendir(pathname)) == NULL)
{
ret = mkdir(pathname, 0755);
if (ret != 0) return -1;
printf("%s created sucess!/n", pathname);
}
else
{
printf("%s exist!/n", pathname);
}
return ret;
}
本文地址:https://blog.csdn.net/Swallow_he/article/details/109639047
希望與廣大網(wǎng)友互動??
點此進行留言吧!
總結(jié)
以上是生活随笔為你收集整理的linux下mkdir头文件_Linux中判断一个目录是否存在,如果不存在就创建这个目录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 机器配置查看(linux 机
- 下一篇: mac 连接hbase的图形化界面_MA