gpt4 book ai didi

c - 即使定义也没有写权限

转载 作者:行者123 更新时间:2023-11-30 14:22:34 26 4
gpt4 key购买 nike

我想使用 open() 创建一个文件。

这是我的代码的一部分:

int fd = open("testing", O_EXCL | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO);
if(fd == -1){
perror("Error");
return 1; }

输出应该是创建一个名为“testing”的文件,该文件具有用户、组和其他人的读、写和执行权限。

但是我得到的是一个名为“testing”的文件,具有此权限:

-rwxr-xr-x

缺少组和其他人的写入权限。

我也尝试过使用

S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH |S_IXOTH)

但我仍然得到相同的结果。

如何解决这个问题?

最佳答案

权限由进程的 umask 修改。有效权限为(mode & ~umask)

您应该在创建文件后使用fchmod()更改权限。 fchmod() 避免了如果您使用 chmod() 并且底层文件更改为指向 open() 之间的其他 inode 时可能出现的竞争条件> 和 chmod()(谷歌搜索 TOCTOU 比赛)。

关于c - 即使定义也没有写权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com