创建文件并分配权限

标签 c posix file-permissions

似乎无论我将什么设置为 PERMS,创建的文件都具有相同的权限 - rwx r-x r-x

我尝试了 755 和 777,权限保持不变。

#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/stat.h>
#define PERMS 0777

int main(int argc, char *argv[])
{
    int createDescriptor;
    char fileName[15]="Filename.txt";

    if ((createDescriptor = creat(fileName, PERMS )) == -1)
    {
        printf("Error creating %s", fileName);
        exit(EXIT_FAILURE);
    }

    if((close(createDescriptor))==-1)
    {
        write(2, "Error closing file.\n", 19);
    }

    return 0;
}

最佳答案

我认为您可能需要在调用 creat 之前更改 umask:

umask(0000);

参见 man 2 umask。默认的 umask 通常是 0022,这将完全消除 0777 和 0755 之间的差异。

关于创建文件并分配权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14112765/

相关文章:

c - 产生箭头键的输出

C语言,如何将数字转换为字符串?

c - 从c中的命令行读取的字符串中打印转义字符

C - execve() 在命令错误时不返回 -1

multithreading - 可选的取消点

.net - Glyphicons 在开发中显示良好,但在 IIS 中托管时显示不正常

c - 正确播种 rand_r(int *val) 方法

create() 覆盖我的文件

linux - 使用绑定(bind)挂载的主机目录和容器之间的 Docker 文件权限不匹配

c - 如何将字符数组转换为分贝