简化版chmod

Posted area-h-p

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简化版chmod相关的知识,希望对你有一定的参考价值。

我们知道对文件访问权限的修改在Shell下可通过chmod来进行

例如

技术图片

可以看到v.c文件从无权限到所有者可读可写可执行、群组和其他用户可读可执行

chmod函数原型

int chmod(const char *path, mode_t mode)

第一个参数为文件名,第二个参数为8进制的权限参数,权限更改成功时返回0,更改失败返回-1,错误代码存储于系统预定义变量errno中。

利用chmod函数我们实现了自己简化版chmod命令

/*功能:改变文件访问权限*/
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
int main(int argc, char ** argv)
{
 int mode;//权限
 int mode_u;//拥有着权限
 int mode_g;//所属组权限
 int mode_o;//其他用户权限
 char *path;
 /*检查参数个数的合法性1*/
 if(argc < 3)
 {
  printf("%s<mode num> <target file>
", argv[0]);
  exit(0);
 }
 /*检查命令行参数*/
 mode = atoi(argv[1]);//atoi函数可将字符串转换成整型参数,如atoi("123")的返回值是整形数字123
 if(mode < 0)//输入权限合法性检查
 {
  printf("mode num error!
");
  exit(0);
 }
 mode_u = mode/100;
 mode_g = (mode - (mode_u*100))/10;
 mode_o = (mode - (mode_u*100) - (mode_g*10));
 mode = (mode_u*8*8) + (mode_g*8) + mode_o;
 if(mode_u>7 || mode_g>7 || mode_o >7)//输入权限合法性检查2
 {
  printf("mode num error!
");
  exit(0);
 }
 path = argv[2];
 if(chmod(path, mode) == -1)
 {
  perror("chmod error");
  exit(1);
 }
 return 0;
}

  

 

 测试下

技术图片

可以,正常运行

 

以上是关于简化版chmod的主要内容,如果未能解决你的问题,请参考以下文章

PHP代码-psysh调试代码片段工具

[vscode]--HTML代码片段(基础版,reactvuejquery)

尽管覆盖了 onSaveInstanceState,但片段的包在 onCreate 中为空

php 简化主题片段

JQeury添加和删除class内部实现代码(简化版)

SinGAN一张照片即可生成同样的照片(附简化版代码)