1. 程式人生 > >Linux C 建立多級目錄

Linux C 建立多級目錄

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命令會提示許可權不夠
寫:可以建立刪除該資料夾中的檔案、資料夾,否則不能建立刪除(但是可以修改已有的檔案的內容)
執行:有該許可權才能進入到該資料夾中。