Linux系統程式設計(七)檔案許可權系統呼叫

cotecsz發表於2020-12-22

7.1 access 判斷檔案許可權/檔案是否存在

  1. 包含標頭檔案
 #include <unistd.h>
  1. 函式原型
int access(const char *pathname, int mode);
  1. 引數
  • pathname :檔案路徑
  • mode :檔案許可權
    • R_OK :判斷讀許可權
    • W_OK:判斷寫許可權
    • X_OK :判斷執行許可權
    • F_OK :判斷檔案是否存在
  1. 返回值
  • 呼叫成功,返回0
  • 呼叫失敗,返回-1
  1. access 示例程式碼
#include <unistd.h>
#include <stdio.h>


int main(){
    int ret = access("a.txt", F_OK);
    if (ret == -1){
        perror("access");
        return -1;
    }

    printf("檔案存在");
    return 0;
}

7.2 chmod 修改檔案許可權

  1. 包含標頭檔案
#include <sys/stat.h>
  1. 函式原型
int chmod(const char *pathname, mode_t mode);
  1. 引數
  • pathname :檔案路徑
  • mode :需要修改的檔案許可權
  1. 返回值
  • 呼叫成功,返回0
  • 呼叫失敗,返回-1
  1. chmod 示例程式
#include <stdio.h>
#include <sys/stat.h>


int main(){
    int ret = chmod("a.txt", 0775);
    if (ret == -1){
        perror("chmod");
        return -1;
    }

    return 0;
}

編譯執行結果
chmod

7.3 chown 修改檔案所在組 / 所有者

7.4 truncate 縮減 / 擴充套件檔案至指定大小

  1. 包含標頭檔案
#include <unistd.h>
#include <sys/types.h>
  1. 函式原型
int truncate(const char *path, off_t length);
  1. 引數
  • pathname :需要修改的檔案路徑
  • length :劃分檔案的大小
  1. 返回值
  • 呼叫成功,返回0
  • 呼叫失敗,返回-1
  1. truncate 示例程式
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>

int main(){
    int ret = truncate("a.txt", 100);

    if (ret == -1){
        perror("truncate");
        return -1;
    }
    return 0;
}

編譯執行
truncate

相關文章