永发信息网

c语言文件的权限怎么设置?

答案:3  悬赏:80  手机版
解决时间 2021-04-01 14:35
  • 提问者网友:川水往事
  • 2021-03-31 17:39
c语言文件的权限怎么设置?
最佳答案
  • 五星知识达人网友:等灯
  • 2021-03-31 19:01
0666:
第一个 0 表示这个数是 八进制
第一个 6 表示文件拥有者有读写权限,但没有执行权限
第二个 6 表示文件拥有者同组用户有读写权限,但没有执行权限
第三个 6 表示其它用户有读写权限,但没有执行权限

6 的 二进制就是 0110
第 1 位在权限中总是为 0
第 2 位为 0 表示文件不可以被读, 为 1 表示可以被读

第 3 位为 0 表示文件不可以被写, 为 1 表示可以被写
第 4 位为 0 表示文件不可以被执行, 为 1 表示可以被执行
全部回答
  • 1楼网友:笑迎怀羞
  • 2021-03-31 21:10

1、用stat函数得到文件信息,并用函数转化为文本输出,就跟ls命令一样。
2、例程:
#include  
#include 
#include 
#include 
#include 
#include 
void mode_to_letter(int mode,char *str)
{

str[0]='-'; 
if(S_ISDIR(mode)) str[0]='d';
if(S_ISCHR(mode)) str[0]='c';
if(S_ISBLK(mode)) str[0]='b';
if(mode & S_IRUSR) str[1]='r';
else str[1]='-';
if(mode & S_IWUSR) str[2]='w';
else str[2]='-';
if(mode & S_IXUSR) str[3]='x';
else str[3]='-';
if(mode & S_IRGRP) str[4]='r';
else str[4]='-';
if(mode & S_IWGRP) str[5]='w';
else str[5]='-';
if(mode & S_IXGRP) str[6]='x';
else str[6]='-';
if(mode & S_IROTH) str[7]='r';
else str[7]='-';
if(mode & S_IWOTH) str[8]='w';
else str[8]='-';
if(mode & S_IXOTH) str[9]='x';
else str[9]='-';
str[10]='';
}
int main(int argc,char *argv[])
{
struct stat sb;
char str[12];
if(argc!=2){
fprintf(stderr,"Usage: %s  ",argv[0]);
exit(EXIT_FAILURE);
}
if(stat(argv[1],&sb)==-1){
perror("stat");
exit(EXIT_FAILURE);
}
printf("Mode:%lo(octal) ",(unsigned long)sb.st_mode);
mode_to_letter(sb.st_mode,str);
printf("Mode:%s ",str);
return 0;
}
  • 2楼网友:末日狂欢
  • 2021-03-31 19:43
这应该是linux下面才用的吧。0642代表文件所有者拥有可读可写的权限,第一个0是不是输入错了?第一个字符应该代表文件的类型。
后面的642分别代表文件所有者,文件所在组,其他组对文件的操作权限。
RWX表示421(即可读,可写,可执行),例如6就等于4+2,所以是可读可写,以此类推。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯