fchmod()无法在C中正确应用文件权限
这是我试图对文件应用权限的部分代码fchmod()无法在C中正确应用文件权限,c,linux,filesystems,C,Linux,Filesystems,这是我试图对文件应用权限的部分代码 fd=fopen(file_name,"wb"); fchmod(fd,(mode_t)perm); 其中perm是一个整数。例:644或755 我尝试了不使用模式强制转换。当您需要应用文件权限时,您需要使用八进制值!使用整数值时,它无效 试试这个- int perm = 0644; // or use mode_t perm = 0644; fd=fopen(file_name,"wb"); fchmod(fd,perm); 当您需要应用文件权限时,
fd=fopen(file_name,"wb");
fchmod(fd,(mode_t)perm);
其中perm是一个整数。例:644或755
我尝试了不使用模式强制转换。当您需要应用文件权限时,您需要使用八进制值!使用整数值时,它无效 试试这个-
int perm = 0644; // or use mode_t perm = 0644;
fd=fopen(file_name,"wb");
fchmod(fd,perm);
当您需要应用文件权限时,您需要使用八进制值!使用整数值时,它无效 试试这个-
int perm = 0644; // or use mode_t perm = 0644;
fd=fopen(file_name,"wb");
fchmod(fd,perm);
当您需要应用文件权限时,您需要使用八进制值!使用整数值时,它无效 试试这个-
int perm = 0644; // or use mode_t perm = 0644;
fd=fopen(file_name,"wb");
fchmod(fd,perm);
当您需要应用文件权限时,您需要使用八进制值!使用整数值时,它无效 试试这个-
int perm = 0644; // or use mode_t perm = 0644;
fd=fopen(file_name,"wb");
fchmod(fd,perm);
这应该是
0644
或0755
。这些都是八进制常数,所以它们才有意义
0644表示对业主的读/写(6);只读组和世界
0755表示对业主的读/写/执行(7);读取/执行到组和世界。应该是
0644
或0755
。这些都是八进制常数,所以它们才有意义
0644表示对业主的读/写(6);只读组和世界
0755表示对业主的读/写/执行(7);读取/执行到组和世界。应该是
0644
或0755
。这些都是八进制常数,所以它们才有意义
0644表示对业主的读/写(6);只读组和世界
0755表示对业主的读/写/执行(7);读取/执行到组和世界。应该是
0644
或0755
。这些都是八进制常数,所以它们才有意义
0644表示对业主的读/写(6);只读组和世界
0755表示对业主的读/写/执行(7);读取/执行到group and world。除了前面提到的使用八进制常量的问题外,您调用的
fchmod
不正确-原型是:
int
fchmod(int fildes, mode_t mode);
^^^^^^^^^^
但是您正在为第一个参数传递一个文件*
(由fopen
返回)!使用open
而不是fopen
,这样您就可以使用int-fildes
进行播放,或者使用chmod
作为文件名
这里有两条重要的带回家的信息:
fchmod
fchmod
这样的调用返回一个状态-您不应该忽略这个!在您的情况下,它很可能是非零的,因为您传递了一个无效的fildes
参数。因此,即使代码是正确的,您仍然可以从非零状态中学到一些东西除了前面提到的使用八进制常量的问题外,您调用的
fchmod
不正确-原型是:
int
fchmod(int fildes, mode_t mode);
^^^^^^^^^^
但是您正在为第一个参数传递一个文件*
(由fopen
返回)!使用open
而不是fopen
,这样您就可以使用int-fildes
进行播放,或者使用chmod
作为文件名
这里有两条重要的带回家的信息:
fchmod
fchmod
这样的调用返回一个状态-您不应该忽略这个!在您的情况下,它很可能是非零的,因为您传递了一个无效的fildes
参数。因此,即使代码是正确的,您仍然可以从非零状态中学到一些东西除了前面提到的使用八进制常量的问题外,您调用的
fchmod
不正确-原型是:
int
fchmod(int fildes, mode_t mode);
^^^^^^^^^^
但是您正在为第一个参数传递一个文件*
(由fopen
返回)!使用open
而不是fopen
,这样您就可以使用int-fildes
进行播放,或者使用chmod
作为文件名
这里有两条重要的带回家的信息:
fchmod
fchmod
这样的调用返回一个状态-您不应该忽略这个!在您的情况下,它很可能是非零的,因为您传递了一个无效的fildes
参数。因此,即使代码是正确的,您仍然可以从非零状态中学到一些东西除了前面提到的使用八进制常量的问题外,您调用的
fchmod
不正确-原型是:
int
fchmod(int fildes, mode_t mode);
^^^^^^^^^^
但是您正在为第一个参数传递一个文件*
(由fopen
返回)!使用open
而不是fopen
,这样您就可以使用int-fildes
进行播放,或者使用chmod
作为文件名
这里有两条重要的带回家的信息:
fchmod
fchmod
这样的调用返回一个状态-您不应该忽略这个!在您的情况下,它很可能是非零的,因为您传递了一个无效的fildes
参数。因此,即使代码是正确的,您仍然可以从非零状态中学到一些东西你听过你的编译器吗?即使在默认设置下,编译器也应该用类似“
warning:compatible pointer to integer conversion passing'FILE*”(又称“struct”\u sFILE)的东西警告您