创建文件时,系统调用open似乎是在随机设置文件权限

问题描述

我正在使用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应该为您提供所有详细信息。