• 正文
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard-目录权限之chmod

12/20 14:32
218
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

用于更改文件或目录的权限。

1.头文件

#include <sys/stat.h>

2.函数原型

int chmod(const char *pathname, mode_t mode);

3.参数

pathname:指向要检查的路径名的指针。

mode:一个表示新权限的模式值,通常是一个整数,它使用位掩码的形式来表示。

这里的mode值可以参考文件权限章节开头的表格。这里需要说明的是这些权限可以使用位运算符组合起来。如:

mode_t mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP

4.返回值

成功返回0,错误返回-1。

5.示例:(使用chmod函数更改文件权限)

#include <stdio.h>

#include <sys/stat.h>

#include <stdlib.h>

void permissions_printf(const char *path)

{

struct stat file_info;

if (lstat(path, &file_info) < 0) {

exit(EXIT_FAILURE);

}

printf("File: %sn", path);

printf("Permissions: ");

printf((S_ISDIR(file_info.st_mode)) ? "d" : "-");

printf((file_info.st_mode & S_IRUSR) ? "r" : "-");

printf((file_info.st_mode & S_IWUSR) ? "w" : "-");

printf((file_info.st_mode & S_IXUSR) ? "x" : "-");

printf((file_info.st_mode & S_IRGRP) ? "r" : "-");

printf((file_info.st_mode & S_IWGRP) ? "w" : "-");

printf((file_info.st_mode & S_IXGRP) ? "x" : "-");

printf((file_info.st_mode & S_IROTH) ? "r" : "-");

printf((file_info.st_mode & S_IWOTH) ? "w" : "-");

printf((file_info.st_mode & S_IXOTH) ? "x" : "-");

printf("n");

}

int main(){

const char *file = "chmod_file.txt";

mode_t mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWOTH;

printf("Source Permissionsn");

permissions_printf(file);

chmod(file, mode);

printf("nChange Permission:n");

permissions_printf(file);

}

6.测试结果

Source Permissions

File: chmod_file.txt

Permissions: -rw-r--r--

Change Permission:

File: chmod_file.txt

Permissions: -rwxr---w-

可以看到修改的文件名称为chmod_file.txt,原权限为文件拥有者有读写权限,同组用户有读权限,其他用户也是读权限。修改后变为文件拥有者有读写执行权限,同组用户支持读权限,其他用户支持写权限。

相关推荐