我正在编写一个需要能够设置文件权限的程序,但出于某种原因,chmod 的行为与我期望的不同。对于几个测试,我尝试创建两个不同的文件(fileOne.txt 和 fileTwo.txt)。 fileOne.txt 应将权限设置为 600,而 fileTwo.txt 应将权限设置为 777。
运行我的程序结果如下:
fileOne.txt having permissions set to ---x-wx--T
fileTwo.txt having permissions set to -r----x--t
??什么?
下面是我的代码。我的 printf 的结果如预期的那样,(600, 777),那么为什么 chmod 不喜欢这样呢?
printf("chmod = %d\n", (int)getHeader.p_owner * 100 + (int)getHeader.p_group * 10 + (int)getHeader.p_world);
chmod(getHeader.file_name, (int)getHeader.p_owner * 100 + (int)getHeader.p_group * 10 + (int)getHeader.p_world);
最佳答案
UNIX 文件系统权限是八进制而不是十进制。因此,将它乘以 100
和 10
会得到意想不到的结果。
关于C - 调用 chmod 函数导致意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193236/