关闭

Linux中chmod指令的实现

标签: linux
488人阅读 评论(2) 收藏 举报
分类:

chmod命令可以使用八进制数来指定权限。首先man 2 chmod查看chmod函数原型
这里写图片描述
为int chmod(const char *pathname,mode_t mode);权限更改成功返回0,失败返回-1.错误代码储存在errno中

#include<stdio.h>
#include<stdlib.h>                //strtol对应头文件
#include<sys/stat.h>
#include<errno.h>

int main(int argc,char** argv)       //argc记录指令数,argv记录指令
{
    int mode;               //mode_t类型
    char* path;
    if(argc<3)              //当指令数小于3时报错,并结束程序
    {
        printf("%s <mode num> <target file>\n",argv[0]);
        exit(0);
    }
    mode=strtol(argv[1],NULL,8);         //将输入的权限对应字符串转换为八进制数字
    if(mode>0777||mode<0)                //当mode>八进制的777时报错并结束程序
    {
        printf("mode num error!\n");
        exit(0);
    }
    path=argv[2];                        //path指向待更改权限的文件名
    if(chmod(path,mode)==-1)             //更改权限失败时报错,并结束程序
    {
        perror("chmod error!");
        exit(1);
    }
    return 0;
}

在这里需要说明一下,strtol的返回值为long int,也就是说我们在用mode存储strtol的返回值时,八进制已经被强制转换为十进制了,例如我们要更改的权限为777,则mode的值为十进制的 511.然后chmod会去识别输入的为八进制还是十进制。然后去将文件的权限更改为八进制对应的权限。
最后咱们看看结果。
首先创建一个新的文件,然后再用我们的程序去更改其权限为0。
这里写图片描述
我们还可以将生成的可执行文件放到公共目录中,然后通过alias对”绝对路径/my_chmod”起别名为my_chmod。那么我们就可以在别的目录下使用咱们写的my_chmod指令了(my_chmod后的文件名应当为绝对路径)。

0
0
查看评论

chmod函数的使用

#include #include    #include void main() {     const char path[] = "/home/iptv2/zhouzhenhe/test/chmod_test"; ...
  • zhouzhenhe2008
  • zhouzhenhe2008
  • 2014-10-23 11:52
  • 1997

chmod 与fchmod函数

#include int chmod(const char *pathname, mode_t mode); int fchmod(int filedes, mode_t mode); fchmod()会依参数mode权限来更改参数fildes所指文件的权限。参数fildes为已打开文件的文件...
  • u012349696
  • u012349696
  • 2016-03-08 15:44
  • 1076

在Linux中, 用C语言简单实现chmod命令

在Linux中,我们知道chmod这个命令的功能是改变文件的权限。 现在, 用C语言实现这个改变文件权限的功能 要用C语言实现这个功能的核心就是 利用chmod()这个函数及对需要改变的权限的分析 chmod函数原型如下: #include #include int chmod(const ...
  • qq283802332
  • qq283802332
  • 2013-11-22 22:49
  • 2279

用c实现chmod功能

重点介绍的是linux 文件权限管理的chmod函数 函数原型 定义: int chmod(const char * path,mode_t mode); 表头文件: #include #include 说明: chmod()会依参数mode 权限来更改参数path 指定文件的权...
  • Coolyqq
  • Coolyqq
  • 2016-08-04 11:44
  • 444

Linux中chmod指令的实现

chmod命令可以使用八进制数来指定权限。首先man 2 chmod查看chmod函数原型 为int chmod(const char *pathname,mode_t mode);权限更改成功返回0,失败返回-1.错误代码储存在errno中#include<stdio.h> #i...
  • Sanjiye
  • Sanjiye
  • 2017-07-17 20:47
  • 488

chmod 777的用法 修改文件用户权限

  • 2018-02-10 13:55
  • 642B
  • 下载

linux执行crontab、脚本命令及chmod

02 09 * * * sh /home/db2inst1/symisdb/load/backup.sh > /home/db2inst1/symisdb/load/backup.log *   *   *  *  *   分别代表:分钟,...
  • qiuyang0607
  • qiuyang0607
  • 2017-02-08 09:39
  • 554

linux chmod命令参数及用法详解-文件文件夹权限设定命令

chmod   1.作用   chmod命令是非常重要的,用于改变文件或目录的访问权限,用户可以用它控制文件或 目录的访问权限,使用权限是超级用户。   2.格式   chmod命令有两种用法。一种是包含字母和操作符表达式的字符设定法(相对权...
  • sswqzx
  • sswqzx
  • 2013-11-29 01:37
  • 895

Unix/Linux编程实践教程–chmod在Centos7.3的实现

环境:centos 7.3 x86_64如果搜一下man就会发现,里面有两个chmod,一个是chmod(1),一个是chmod(2)。根据牛顿-莱布尼兹公式,立即推,第一个是用户命令,第二个是系统调用。系统调用里,函数的原型是这样的:int chmod(const char *pathname, ...
  • stc_XC
  • stc_XC
  • 2017-06-24 16:14
  • 278

Android中通过代码实现文件权限的修改(chmod)

http://blog.163.com/malloc_wet/blog/static/1104560862011922114313526/ 指令名称 : chmod   使用权限 : 所有使用者   使用方式 : chmod [-cfvR] [--help] [--version] mod...
  • ZhangQiang_0
  • ZhangQiang_0
  • 2017-03-17 14:02
  • 1774
    个人资料
    • 访问:6728次
    • 积分:318
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:0篇
    • 译文:0篇
    • 评论:11条
    文章分类
    最新评论