Linux C 建立多級目錄
阿新 • • 發佈:2019-01-05
linux c下建立多級目錄有兩種方法:
測試程式如下:在linux下執行是沒有問題的
1、使用系統命令建立
/*******************************************************************
** 函式名: folder_mkdirs
** 函式描述: 可多級建立資料夾
** 引數: folder_path:目標資料夾路徑
** 返回: 1 - 目標資料夾存在,2 - 建立失敗
********************************************************************/
INT8U folder_mkdirs(char *folder_path)
{
if(!access(folder_path, F_OK)){ /* 判斷目標資料夾是否存在 */
return 1;
}
char *cmd;
pid_t result;
cmd = (char *)FK_MALLOC(CMD_LEN);
memset(cmd, 0, CMD_LEN);
sprintf(cmd, "mkdir -p %s", folder_path);
result = system(cmd);
FK_FREE(cmd);
if (-1 == result || !WIFEXITED(result) || 0 != WEXITSTATUS(result)){
return 2;
}
return 1;
}
2、使用mkdir逐級建立
#include <stdio.h>
#include <string.h>
#include <unistd.h>
/*******************************************************************
** 函式名: folder_mkdirs
** 函式描述: 可多級建立資料夾
** 引數: folder_path:目標資料夾路徑
** 返回: 1 - 目標資料夾存在,2 - 建立失敗
********************************************************************/
int folder_mkdirs(char *folder_path)
{
if(!access(folder_path, F_OK)){ /* 判斷目標資料夾是否存在 */
return 1;
}
char path[256]; /* 目標資料夾路徑 */
char *path_buf; /* 目標資料夾路徑指標 */
char temp_path[256]; /* 存放臨時資料夾路徑 */
char *temp; /* 單級資料夾名稱 */
int temp_len; /* 單級資料夾名稱長度 */
memset(path, 0, sizeof(path));
memset(temp_path, 0, sizeof(temp_path));
strcat(path, folder_path);
path_buf = path;
while((temp = strsep(&path_buf, "/")) != NULL){ /* 拆分路徑 */
temp_len = strlen(temp);
if(0 == temp_len){
continue;
}
strcat(temp_path, "/");
strcat(temp_path, temp);
printf("temp_path = %s\n", temp_path);
if(-1 == access(temp_path, F_OK)){ /* 不存在則建立 */
if(-1 == mkdir(temp_path, 0777)){
return 2;
}
}
}
return 1;
}
int main(void)
{
char *p = "/tmp/aaa/bbb/ccc/";
folder_mkdirs(p);
return 0;
}
說一下資料夾的許可權問題:
讀:可以讀取該資料夾中的內容,否則cd進到資料夾中ls命令會提示許可權不夠
寫:可以建立刪除該資料夾中的檔案、資料夾,否則不能建立刪除(但是可以修改已有的檔案的內容)
執行:有該許可權才能進入到該資料夾中。