C - 调用 chmod 函数导致意外结果

标签 c chmod

我正在编写一个需要能够设置文件权限的程序,但出于某种原因,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 文件系统权限是八进制而不是十进制。因此,将它乘以 10010 会得到意想不到的结果。

关于C - 调用 chmod 函数导致意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193236/

相关文章:

python - 如何在 Delphi 中使用 C API 函数 PyArg_ParseTupleAndKeywords?

PHP:从文件访问目录

amazon-web-services - 通过 SSH 连接到 AWS 上的 ec2 实例

无法以编程方式减小 gtk 窗口的大小

c - 如何在C中为指针字符串赋值

python - Linux。 Heroku-Django。 Collectstatic 只读文件系统

android - android:gradle:如何复制文件?发出将文件设置为可读或读取的问题

Linux:仅对目录设置权限

c - 我不明白为什么我的 C 程序运行一次正确,然后却给出了不需要的结果

c - 通过 Asterisk 通过简单的 PJSIP 软电话进行调用时出现问题