chmod

my_chmod.c

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

int main(int argc, char ** argv)
{
    int mode; 
    int mode_u;
    int mode_g;
    int mode_o;
    char* path;

    if(argc < 3) {
        printf("%s <mode num> <target file>\n", argv[0]);
        exit(0);
    }

    // 将字符串转换成整型
    mode = atoi(argv[1]);
    printf("%d\n", mode);

    if(mode > 777 || 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;


    printf("The result mode we get-->%d\n", mode);

    path = argv[2];

    if(chmod(path, mode) == 1) {
        perror("chmod error");
        exit(1);
    } else {
        puts("Modify Success!");
    }

    return 0;
}

测试 查看结果

./my_chmod 776 my_chmod.c
ll
./my_chmod 777 my_chomd.c
ll
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容