似乎无论我将什么设置为 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/