使用open()系统调用

sam*_*moz 11 c unix file

我正在编写一个将输出写入文件的程序.如果此文件不存在,我想创建它.

目前,我在调用open时使用以下标志:O_WRONLY | O_CREATE

但是,当这创建文件时,它不会给我任何写入它的权限...

我如何使用open以便在不存在的情况下创建文件,但是在需要时会创建具有必要权限的文件?

谢谢!

Ran*_*tor 17

你可能需要第三个参数.例如:

open('path',O_WRONLY|O_CREAT,0640);


Dav*_*d Z 14

只需使用可选的第三个参数open:

int open(const char* pathname, int flags, mode_t mode);
Run Code Online (Sandbox Code Playgroud)

像这样:

open("blahblah", O_CREAT | O_WRONLY, S_IRUSR | S_IWUSER | S_IRGRP | S_IROTH);
Run Code Online (Sandbox Code Playgroud)

man open(2).

  • 它不是'S_IWUSER`..its`S_IWUSR` (2认同)