我正在使用open函数创建一个文件并使用O_CREAT | O_EXCEL。我已将模式传递为“0666”。但是通过屏蔽最后分配给它的许可是-rw-r - r--而不是 -rw-rw-rw-。有人告诉我,我可以使用umask(011),然后再次重置原始掩码。 但我不知道如何在c ++程序中传递这个。这是我正在做的小片段。
# include <iostream>
# include <stdio.h>
# include <conio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
using namespace std;
int main()
{
int fd = open("C:\\Users\\Ritesh\\Music\\music.txt", O_CREAT | O_EXCL, 0666);
getch();
return 0;
}
创建文件C:\Users\Ritesh\Music\music.txt with permission -rw-r--r-- .
我希望它为-rw-rw-rw-
答案 0 :(得分:3)
mode_t old_mask; old_mask = umask( 011 ); open( ... ); umask( old_mask );
答案 1 :(得分:2)
umask表示默认情况下您不希望为文件提供的权限。因此,如果要在创建文件时完全控制权限,请将umask设置为0,这告诉操作系统不保留任何权限并允许您调用镜头。像这样:
int main()
{
mode_t oldmask = umask(0);
int fd = open("C:\\Users\\Ritesh\\Music\\music.txt", O_CREAT | O_EXCL, 0666);
close(fd);
umask(oldmask);
getch();
return 0;
}
答案 2 :(得分:0)