linux C IO 小结1

                                                                                                         linux C I/O  (文件操作1)

  文件主要包含两个方面的内容:

        1.文件本身所包含的数据

        2.文件的属性(日期,权限,访问者,所有者。。。)

 其中一个非常有用的数据结构在<sys/stat.h>中,这里包含了所有关于文件信息的东西

       目录也是一种文件,叫目录文件。

       linux下的一些目录:

        /bin:存放一些普通用户可以执行的命令

        /boot :内核以及启动的文件‘

        /dev:设备文件

       /etc   : 配置文件

       /home:  用户家目录,存放用户的文件

       /lib      :  各种库文件

       /root   :  超级用户

       /sbin   :  管理系统的命令

       /tmp    :  临时文件目录

        /usr    :  系统应用程序  

       /var     :  日志文件

文件的分类为:

       普通文件,目录文件,特殊字符文件,块特殊文件,FIFO,套结字,符号链接

访问权限:

     读,写,执行,      4+2+1 = 7;

chmod 600 ××× (只有所有者有读和写的权限)

chmod 644 ××× (所有者有读和写的权限,组用户只有读的权限)

chmod 700 ××× (只有所有者有读和写以及执行的权限)

chmod 666 ××× (每个人都有读和写的权限)

chmod 777 ××× (每个人都有读和写以及执行的权限)

下面贴上chmod 的简单实现

#include<stdio.h>
#include<stdlib.h>                 //包含exit()返回函数
#include<sys/types.h>              //包含chmod,fchmod函数
#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("please enter ture number:");
       exit(0);
     }

    mode = atoi(argv[1]);                   //将文件的个个权限分离,且在最后转换成八进制(系统可以接受的形式)
    if(mode > 777 || mode < 0){
      printf("please enter a ture power:");
      exit(1);
     }
    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*1);
    path = argv[2];

    if(-1 == chmod(path,mode)){             //判错操作,同时也执行了主要的功能
       printf("the chmod is error\n");
       exit(3);
    }

    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值