linux C IO 小结1 缺乏、安全感 2022-08-04 16:40 128阅读 0赞 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; }
还没有评论,来说两句吧...