使用O_CREAT时执行open

时间:2019-07-02 06:38:55

标签: c linux operating-system file-permissions file-descriptor

我试图了解os的一些基础知识,并且陷入了标志和权限之间。

如果使用open(),则遵循以下方式 int fd = open(path, O_CREAT | O_RDWR, 0000); 在哪些情况下我们的文件将具有0000权限,在什么情况下我们的文件将具有0666条件?

起初我以为如果已经创建了文件,我们将以0000权限使用它,如果尚未创建,则将以0666权限创建并使用它。我不确定我是否正确。

1 个答案:

答案 0 :(得分:2)

  • 如果此打开命令正在创建新文件,则仅mode = 0000适用于此。
  • 如果文件已经存在,那么mode的值是什么都没关系。

此处您使用的是mode = 0000。如果该文件不存在,则它将分配“ 0000”权限,这意味着没有人(用户,组,其他)具有任何读|写|执行权限。 请使用正确的模式值。