使用 st_mode 解释从 stat 系统调用获取的文件权限

使用 st_mode 解释从 stat 系统调用获取的文件权限

代码:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[]) {
  struct stat st;
  if( argc < 2) {
    fprintf(stderr, "ERROR: Require a path\n");
    return 2;   //return status error 
  }

  if( stat(argv[1], &st) < 0) {    //error, cannot stat file  
    perror(argv[0]);               //report erro with perror 
    return 2;                      //return status error 
  }

printf("The permissions of the given file are %o\n",st.st_mode);
return 0;
}

输出:

./statkk kk1.pdf
给定文件的权限是100664

这里pdf格式是一个普通文件。我发现最后三个八进制数分别表示所有者、组和其他人的权限。

第一、第二、第三个八进制数表示什么? 请看图片

答案1

详细解释请见http://manpages.ubuntu.com/manpages/man7/inode.7.html

掩码0100000 表示这是一个常规文件:S_IFREG

相关内容