标签:整型 无权限 erro 输入 访问权限 错误 turn 字符 图片
我们知道对文件访问权限的修改在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>\n", argv[0]);
exit(0);
}
/*检查命令行参数*/
mode = atoi(argv[1]);//atoi函数可将字符串转换成整型参数,如atoi("123")的返回值是整形数字123
if(mode < 0)//输入权限合法性检查
{
printf("mode num error!\n");
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!\n");
exit(0);
}
path = argv[2];
if(chmod(path, mode) == -1)
{
perror("chmod error");
exit(1);
}
return 0;
}
测试下

可以,正常运行
标签:整型 无权限 erro 输入 访问权限 错误 turn 字符 图片
原文地址:https://www.cnblogs.com/area-h-p/p/10587696.html