这是我尝试对文件应用权限的部分代码。
fd=fopen(file_name,"wb");
fchmod(fd,(mode_t)perm);
其中 perm 是一个整数。例如:644 或 755 我试过不使用模式进行转换。
最佳答案
除了已经提到的使用八进制常量的问题外,您错误地调用了 fchmod
- 原型(prototype)是:
int
fchmod(int fildes, mode_t mode);
^^^^^^^^^^
但是您正在为第一个参数传递 FILE *
(由 fopen
返回)!要么使用 open
而不是 fopen
,这样您就可以使用 int fildes
,或者使用 chmod
文件名。
这里有两条重要的要点:
您应该始终启用编译器警告,并注意任何警告。如果您这样做了,那么很明显您错误地调用了
fchmod
。像
fchmod
这样的调用会返回一个状态 - 你不应该忽略它!在您的情况下,它很可能是非零的,因为您传递了一个无效的fildes
参数。因此,即使代码是正确的,您仍然可以从非零状态中学到一些东西。
关于c - fchmod() 无法在 C 中正确应用文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25301577/