这是我的代码,但它运行不正常。我需要帮助。即使我写./mychmod 777 text.txt例如它也会阻止所有权利而不是反转。提前谢谢
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<unistd.h>
int isFile(const char *ct){
int test=0;
test=open(ct,O_RDONLY) ;
if(test==-1)
return 1;
else
return 0;
close(test);
}
int main( int nb , char ** args){
if(nb<3)
exit(1);
int nbs=(int)(atoi(args[1]));
int i=2;
while(i<nb)
{
if(isFile(args[i])==0){
chmod(args[i],nbs);
if(chmod(args[i],nbs)==0)
printf("success\n");
else
printf("failed\n");
}
else
exit(1);
i++;
}
return 0;
}
答案 0 :(得分:1)
Chmod传统上采用八进制数字值,因此如果要启用所有访问权限,则使用0777(十进制值511)。您在777中传递并使用atoi将其解析为十进制值,因此您最终得到八进制值1411,这可能是一个错误,因为它大于0777.最好,它是&#39; s根本不是你想要设置的权限。