我使用 open 系统调用按以下方式创建和打开文件:
fileID = open("aFile", O_CREAT|O_RDWR|O_TRUNC);
我希望创建具有读写权限的文件,有时确实如此,但只有在我运行 ls -l
时才有效。我只看到 w,或者只是 r,或者只是 x,或者 ws,或者 rwx 等等。如果我使用系统调用运行我的程序 3 次,我可能会获得为 aFile
设置的 3 个不同的文件权限。每一次。我不知道是什么导致了这个问题,因为它似乎是随机设置的。关于可能的原因有什么想法吗?
最佳答案
open()
采用第三个参数,该参数在创建文件时生效。该参数是一组标志,用于修改新文件的访问模式。如果您没有为此参数设置值,则 open()
函数将提供适用于该参数的寄存器或堆栈位置中的任何内容 - 取决于特定系统和编译器。无论如何,它都不太可能是您想要的,并且将以不可预测的方式依赖于前面的代码。
在类 Unix 系统上,man 2 open
应该为您提供所有详细信息。
关于c - 系统调用 open() 似乎在创建文件时随机设置文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63782648/