无options选项chmod命令简单实现

chmod命令

chmod [optins] mode file...

运行 man 2 chmod查看 chmod函数接口

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


没有技术含量,主要是注意,在使用chmod命令的时候mode值是8进制而实际函数调用的时候参数是十进制,要进行进制转换

此处实现放弃 options选项,不然就有难度了

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

//这里传入8进制(only)然后转化为10进制调用chmod函数

int main(int argc, char* argv[])
{
	int mode;
	int mode_u;
	int mode_g;
	int mode_o;
	char *path = NULL;
	if(argc < 3)
	{
		printf("my_chmod: 缺少操作数\n");
		exit(0);
	}
	mode = atoi(argv[1]);
	if(mode > 7777 || mode < 0)
	{
		printf("my_chmod: 无效模式: \"%d\"\n",mode);
		exit(0);
	}
	mode_u = mode / 100;
	mode_g = (mode - mode_u*100)/10;
	mode_o = mode%10;
	mode = mode_u * 8 * 8 + mode_g * 8 + mode_o;
	path = argv[2];
	if( chmod(path, mode) == -1)
	{
		printf("my_chmod: 无法访问文件\"%s\":没有那个文件或目录\n",path);  //放弃是chmod函数内部错误的处理
		exit(0);
	}
	return 0;
}
测试如下



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值